我从Camel Multicast那里得到了奇怪的行为。看起来我做错了什么但不能指出它。
我正在创建一个到两个端点的组播路由,如下所示:
Start point : direct://start
endpoint : direct://route1
endpoint : direct://route2
路线信息:
1)from("direct://start").process(new DeepCloneRequest()).multicast(new Aggregator()).to("direct://route1","direct://route2")
2)from("direct://route1").setheader(<to use later in processor>).process(<do some preprocessing>).to("rest url1").processor(<to do post processing>).end
3)from("direct://route2").setheader(<to use later in processor>).process(<do some preprocessing>).to("rest url2").processor(<to do post processing>).end
我注意到在预处理的第3号路由中,我从第2个预处理中获得了交换,而不是来自多播的DeepCloneRequest。
有人可以帮忙解释一下吗?我希望在路由2和3中获得多播接收的相同请求。
我使用的Camel版本是2.17.3。
答案 0 :(得分:1)
您应该使用onPrepare功能,请参阅http://camel.apache.org/multicast.html
“多播将复制源Exchange并对每个副本进行多播。但是副本是浅拷贝,因此如果您有可变异邮件正文,则任何更改都将显示为其他复制的消息。如果您想使用深度克隆副本,那么您需要使用自定义onPrepare,它允许您使用处理器界面执行此操作。“