骆驼路线 - 忽略返回值

时间:2015-03-12 16:54:50

标签: java spring java-ee apache-camel

我有以下路线:

    from("INPUT_QUEUE")
        .routeId("Test")
        .beanRef("logService", "save")
        .beanRef("deserialiser", "deserialise")

"保存" LogService中的方法返回一个整数。我不希望将此整数传递给deserialise方法。我需要传入来自输入队列的json。

对于这个简单的问题,任何帮助都表示赞赏和道歉,因为我是骆驼新手。

3 个答案:

答案 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

就是这样。您的消息将按原样传递,而不是整数