[
https://issues.apache.org/jira/browse/CAMEL-10320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Luca Burgazzoli updated CAMEL-10320:
------------------------------------
Description:
I've been working on some master/slave RoutePolicy and I'm wondering
if we can have a proper LeaderPolicy with a standardized
implementation in Camel 3.0 so one has only to notify when a
leadership is taken
In addition it may be nice to have:
- a support for Leader election from the CmelContext so the routes are
started when the context become leader.
- an option to warm-up routes or to keep them stopped while not leader
Then we can also make it exposed in JMX so tooling are able to detect
which are current master and slaves, and whatnot.
Some possible DSL/EIP extensions:
{code:java}
from("...")
.routeId("myRoute")
.clustered()
.group("my-group")
.consulConfiguration("http://consul-node:8500")
.end()
. to(...)
{code}
{code:java}
camelContext.setDefaultClusteredRouteConfiguration(
ClusteredRouteConfiguration.builder()
.withAction(ClusteredRouteAction.SUSPEND)
.withHealtCheck(...)
.consulConfiguration("http://consul-node:8500")
.build()
);
// lookup the cluster configuration from the registry
from("clustered:file:/data")
.routeId("data.files")
.to(...)
// lookup the cluster configuration from the registry
from("clustered:file:/share")
.routeId("shared-files")
.to(...)
{code}
If the camel context detects a route is subject to clustering it should
delegate the start/stop to a "RouteController" instead of starting the standard
startup code.
was:
I've been working on some master/slave RoutePolicy and I'm wondering
if we can have a proper LeaderPolicy with a standardized
implementation in Camel 3.0 so one has only to notify when a
leadership is taken
In addition it may be nice to have:
- a support for Leader election from the CmelContext so the routes are
started when the context become leader.
- an option to warm-up routes or to keep them stopped while not leader
Then we can also make it exposed in JMX so tooling are able to detect
which are current master and slaves, and whatnot.
Some possible DSL/EIP extensions:
{code:java}
from("...")
.routeId("myRoute")
.clustered()
.group("my-group")
.consulConfiguration("http://consul-node:8500")
.end()
. to(...)
{code}
{code:java}
camelContext.setDefaultClusteredRouteConfiguration(
ClusteredRouteConfiguration.builder()
.withAction(ClusteredRouteAction.SUSPEND)
.withHealtCheck(...)
.consulConfiguration("http://consul-node:8500")
.build()
);
// lookup the cluster configuration from the registry
from("clustered:file:/data")
.routeId("data.files")
.to(...)
// lookup the cluster configuration from the registry
from("clustered:file:/share")
.routeId("shared-files")
.to(...)
{code}
> Provide a LeaderPolicy to ease the implementation of master/slave
> route/context
> -------------------------------------------------------------------------------
>
> Key: CAMEL-10320
> URL: https://issues.apache.org/jira/browse/CAMEL-10320
> Project: Camel
> Issue Type: New Feature
> Components: camel-core
> Reporter: Luca Burgazzoli
> Fix For: 2.20.0
>
>
> I've been working on some master/slave RoutePolicy and I'm wondering
> if we can have a proper LeaderPolicy with a standardized
> implementation in Camel 3.0 so one has only to notify when a
> leadership is taken
> In addition it may be nice to have:
> - a support for Leader election from the CmelContext so the routes are
> started when the context become leader.
> - an option to warm-up routes or to keep them stopped while not leader
> Then we can also make it exposed in JMX so tooling are able to detect
> which are current master and slaves, and whatnot.
> Some possible DSL/EIP extensions:
> {code:java}
> from("...")
> .routeId("myRoute")
> .clustered()
> .group("my-group")
> .consulConfiguration("http://consul-node:8500")
> .end()
> . to(...)
> {code}
> {code:java}
> camelContext.setDefaultClusteredRouteConfiguration(
> ClusteredRouteConfiguration.builder()
> .withAction(ClusteredRouteAction.SUSPEND)
> .withHealtCheck(...)
> .consulConfiguration("http://consul-node:8500")
> .build()
> );
>
> // lookup the cluster configuration from the registry
> from("clustered:file:/data")
> .routeId("data.files")
> .to(...)
> // lookup the cluster configuration from the registry
> from("clustered:file:/share")
> .routeId("shared-files")
> .to(...)
> {code}
> If the camel context detects a route is subject to clustering it should
> delegate the start/stop to a "RouteController" instead of starting the
> standard startup code.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)