[ https://issues.apache.org/jira/browse/CAMEL-10320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16040532#comment-16040532 ]
Dhiraj Bokde commented on CAMEL-10320: -------------------------------------- [~lb], an initial version of the master component is at https://github.com/dhirajsb/camel/tree/CAMEL-10320. I haven't had the chance to finish the memory based clustering implementation (which is turning out to be a bit more work), so it doesn't have tests yet. You can start work on the DSL bits. I think it's better to create generic DSL bits for the master component, configured with clustering implementation specific builders (pseudo DSL) as building a configuration object doesn't require a DSL. > 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 > Assignee: Dhiraj Bokde > 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") > .master() > .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("master:file:/share") > .routeId("shared-files") > .master() > .configuration("...") > .end() > .to(...) > {code} > {code:xml} > <camelContext .../> > <defaultMasterConfiguration/> > <consulConfiguration url="" userName="" password=""/> > <defaultMasterConfiguration/> > <masterConfiguration id="master-1"/> > <consulConfiguration url="" userName="" password=""/> > <masterConfiguration/> > <!-- > this route should pick up the default configuration > --> > <route id="data-files"> > <from uri="master:file:/data"/> > <to uri="..."/> > <route> > <!-- > this route should pick up the configuration named > master-1 and the master prefix should be optional. > --> > <route id="shared-files"> > <from uri="file:/shared"/> > <master configurationRef="master-1"/> > <to uri="..."/> > <route> > </camelContext> > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)