如何在multicast()中持久化骆驼路由中的标头或属性



我正试图找到一种方法来持久化我的骆驼路由中的头或属性(或任何东西(。我有这样的骆驼路线:

from("direct:start").bean("injectHeader").multicast().to("direct:internal", "direct:external")
.end().bean("c");
from("direct:internal").bean("a");
from("direct:external").bean("b");

a中,我将一些标头设置为something,但它在bc中不持久。只有从b设置的头在c中是持久的。(属性也是如此(

我不知道为什么multicast((会出现这种情况。如果我删除multicast((,则标头是持久的。但是,我确实需要使用multicast((。

如何在multicast((中的整个路由中保持值的持久性?

要持久化属性,需要一个处理器而不是bean。Bean是一个只消耗交换体的endint。处理器拥有整个交换

将代码更改为

from("direct:start")
.process( exchange -> {
exchange.getProperty()...
exchange.setProperty()..
exchange.getOut().setMessage( exchange.getIn().getBody()); // needed if you want to forward the body also                   
})
.multicast()
.to("direct:internal", "direct:external")
.end().bean("c");

最新更新