我正试图找到一种方法来持久化我的骆驼路由中的头或属性(或任何东西(。我有这样的骆驼路线:
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,但它在b
和c
中不持久。只有从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");