我有以下路线:
from("INPUT_QUEUE")
.routeId("Test")
.beanRef("logService", "save")
.beanRef("deserialiser", "deserialise")
"保存" LogService中的方法返回一个整数。我不希望将此整数传递给deserialise方法。我需要传入来自输入队列的json。
对于这个简单的问题,任何帮助都表示赞赏和道歉,因为我是骆驼新手。
答案 0 :(得分:4)
使用multicast模式,允许将相同的消息路由到多个端点并以不同的方式处理它们:
from("INPUT_QUEUE")
.routeId("Test")
.multicast()
.beanRef("logService", "save")
.beanRef("deserialiser", "deserialise")
.end();
答案 1 :(得分:2)
没有bean组件将使用该方法的返回值作为新的消息体。
但是你可以使用语言组件并将其设置为不变换,类似
.to("language:bean:logService.save?transform=false")
我不记得确切的语法,但我认为你可以使用dot来分隔要调用的方法名称,如上所示
答案 2 :(得分:0)
您可以将save()定义为具有Exchange exchange等参数
save(yourExistingArguments, Exchange exchange){
//performYourOperations and get your integer
//However, do not set the integer in the exchange body.
// exchange.getIn().setBody(integer)
// Do not return the integer. Set the integer as state and make it accessible through getter and setter
就是这样。您的消息将按原样传递,而不是整数