骆驼路线 - 忽略 return 值

Camel route - Ignore return value

我有以下路线:

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

日志服务中的"save"方法returns一个整数。我不希望将此整数传递给反序列化方法。我需要传递来自输入队列的 json。

感谢任何帮助,对于这个简单的问题表示歉意,因为我是 camel 的新手。

您可以定义您的 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

就是这样。您的消息在没有整数

的情况下被传递

不,bean 组件将使用方法的 return 值作为新消息体。

但是你可以使用语言组件并将其设置为不转换,类似

.to("language:bean:logService.save?transform=false")

我记不清具体的语法了,不过我觉得你可以用点号来分隔要调用的方法名,如上所示

使用 multicast 模式,允许将相同的消息路由到多个端点并以不同的方式处理它们:

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