[ 
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")
    .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")
    .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}


  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")
    .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")
    .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}



> 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")
>     .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)

Reply via email to