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