+1 Great work Luca. Its good to see this coming in camel-core, as we now have many more Camel components that does clustering and leader elections. It makes good benefit to have some common reusable code from camel-core.
On Wed, Jun 14, 2017 at 11:36 AM, Luca Burgazzoli <lburgazz...@gmail.com> wrote: > Hello, > > I've been working on CAMEL-11362 to create a leader election service > in recent times and I've ended up with some initial bits of a > potential clustering service for Camel [1]. > > So fare there are a few simple interfaces: > - CamelClusterService > - CamelClusterView > - CamelClusterMember > > The CamelClusterService is just a regular camel service and is > responsible to create views of the cluster; a view is like a "group" > with its own set of resources like a leader/services/etc and i.e. > broadcast of messages should not go beyond its borders, etc; how the > view is mapped then depends on the underlying technology used so it > can be a group in atomix/jgroups, a path in zk/etcd, a map in > hazelcast/infinispan, etc. > > As today the View API is limited to leader election and topology > events (member joining/leaving the view) and I've build a generic > RoutePolicy and RoutePolicyFactory on top of them [2][3]. A future > work may be to add support for service discovery, load balancing ad > more. > > I also started the implementation of camel-atomix based on the > atomix.io project which offers some easy to use APIs for distributed > systems so an implementation of the API can be found here [4] and a > test here [5]. > > > Feedback is very welcome. > > > [1] > https://github.com/lburgazzoli/apache-camel/tree/CAMEL-11362/camel-core/src/main/java/org/apache/camel/ha > [2] > https://github.com/lburgazzoli/apache-camel/blob/CAMEL-11362/camel-core/src/main/java/org/apache/camel/impl/ha/ClusteredRoutePolicy.java > [3] > https://github.com/lburgazzoli/apache-camel/blob/CAMEL-11362/camel-core/src/main/java/org/apache/camel/impl/ha/ClusteredRoutePolicyFactory.java > [4] > https://github.com/lburgazzoli/apache-camel/tree/CAMEL-11362/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/ha > [5] > https://github.com/lburgazzoli/apache-camel/blob/CAMEL-11362/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/ha/AtomixRoutePolicyTest.java > > > --- > Luca Burgazzoli -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2