package camelinaction; import java.util.concurrent.TimeUnit; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import org.apache.camel.component.hazelcast.policy.HazelcastRoutePolicy; import org.apache.camel.main.Main; import org.apache.camel.processor.idempotent.hazelcast.HazelcastIdempotentRepository; public class ServerFoo { private Main main; public static void main(String[] args) throws Exception { ServerFoo foo = new ServerFoo(); foo.boot(); } public void boot() throws Exception { // create and embed the hazelcast server // (you can use the hazelcast client if you want to connect to external hazelcast server) HazelcastInstance hz = Hazelcast.newHazelcastInstance(); // setup the hazelcast route policy HazelcastRoutePolicy routePolicy = new HazelcastRoutePolicy(hz); // the lock names must be same in the foo and bar server routePolicy.setLockMapName("myLock"); routePolicy.setLockKey("myLockKey"); routePolicy.setLockValue("myLockValue"); // attempt to grab lock every 5th second routePolicy.setTryLockTimeout(5, TimeUnit.SECONDS); main = new Main(); // bind the hazelcast route policy to the name myPolicy which we refer to from the route main.bind("myPolicy", routePolicy); // add the route and and let the route be named BAR and use a little delay when processing the files main.addRouteBuilder(new FileConsumerRoute("FOO", 100)); main.run(); } }