我有类似下面的东西:
.from("direct:start")
.to("direct:a")
.to("direct:b")
.to("direct:c");
我遇到的问题是direct:a
修改了主体,然后将修改后的主体传递给b和c。我希望a、b和c都得到相同的主体。我可以通过执行.multicast()
来实现这一点:
.from("direct:start")
.multicast()
.to("direct:a",
"direct:b",
"direct:c");
但是,.to(...)
块似乎不再按顺序执行(即使我没有指定.parallelProcessing()
)而且多播也搞乱了我的tx策略。我找不到任何完全符合这种需要的东西。我认为wiretap可以实现这一点,但这是异步的,我需要同步和顺序。我甚至尝试过蛮力保存身体到一个属性对交换,然后恢复它,这似乎不起作用。
2条答案
按热度按时间ss2ws0br1#
您可以使用enrich执行以下操作:
这里的
true
参数意味着子路由抛出的异常将传播到主路由。如果您不希望这样,只需传递false
或完全省略该参数。xu3bshqb2#
您应该使用Wire Tap: