On 12/23/10 11:17 PM, serega wrote:
Willem.Jiang wrote:
Hi,
I don't think Camel support to add and remove the endpoints of the
LoadBalancer as you want in the runtime.
But the now camel route can be start and stop in the runtime. maybe you
can consider to stop the route, change the route and start it again.
Can you elaborate on "stop the route, change the route and start it again".
CamelContext provides API to let you stop the route and remove it.
You just need to name your route with a meaningful ID.
Then you can add a new route which is set with different load balance
endpoints.
And related question.
The following code
/**************************************/
RouteDefinition route = new RouteDefinition();
route.from("sergey:in")
.process(new Processor() {
public void process(Exchange exchange) throws Exception
{
System.out.println("Received " + exchange.getIn());
}
})
.loadBalance().roundRobin()
.to("jms1:queue:testqueue")
.to("jms1:queue:testqueue2")
.to("jms2:queue:testqueue");
context.addRouteDefinition(route);
context.start();
/***********************************/
gives me exception
Exception in thread "main" org.apache.camel.FailedToCreateRouteException:
Failed to create route route1 at:>>> LoadBalanceType[ref:null, []]<<< in
route: Route[[From[sergey:in]] -> [process[com.sybase365.CamelJmsTe...
because of ref or loadBalancer must be specified
But it works if I do the same using context.addRoutes(new RouteBuilder() {
/* same configuration */ }).
The RouteBuilder is helper the user to use the Java DSL more easily, if
you dig the code for a while you will find it does lots of things
undergrad before create a RouteDefinition :)
Thanks,
Sergey.
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang