3
我已经建立了一个简单的动态路由器:了解Apache的骆驼动态路由
public String slip(String body, @Header(Exchange.SLIP_ENDPOINT) String previous) {
if (previous == null) {
return "mock:a";
}
else if (body.contains("status=2")) {
return "mock:b";
}
else if (body.contains("status=3")) {
return "mock:c";
}
// no more so return null
return null;
}
模拟A,B,C与定制处理器路线。
public void process(Exchange exchange) throws Exception {
String str_request = "";
String str_requestNew = "";
str_request = (String) exchange.getIn().getBody();
if(str_request.contains("status=1"))
str_requestNew = "status=2";
}
我如何通过Java DSL我自定义的处理器更新路由之间的邮件正文。 exchange.getOut()。setBody(newreq); ?
我是否需要创建一个新的生产者并将消息发送回动态路由器? ProducerTemplate template = exchange.getContext()。createProducerTemplate(); template.sendBody(myDynamicRouterEndpoint,newreq); 或将我的路由器,如果做到这一点通过方法1.
还是有我的逻辑巨大的缺陷一起拿起新的身体? :)
好的。谢谢。我是否必须通过“to(routerEndpoint)”路由回动态路由器,或者只要更新主体,骆驼就会自动执行此操作? – esimran 2012-04-04 17:49:27
是骆驼继续调用动态路由器,直到你的bean返回null。空是动态路由的信号,它完成了。如果您有骆驼行动书的副本,那么请参阅第8章涵盖此模式的地方,并且我们在源代码中也有许多示例可供您查看。 Apache的文档也有一些报道和例子:http://camel.apache.org/dynamic-router – 2012-04-05 10:10:55