我有一条 apache 骆驼路线,它正在交换主体上处理 POJO。
请查看从 1 到 3 标记的行序列。
from("direct:foo")
.to("direct:doSomething") // 1 (POJO on the exchange body)
.to("direct:storeInHazelcast") // 2 (destroys my pojo! it gets -1)
.to("direct:doSomethingElse") // 3 (Where is my POJO??)
;
现在我需要put
在组件上使用操作hazelcast
,不幸的是需要将 body 设置为值 -1。
from("direct:storeInHazelcast")
.setBody(constant(-1))
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUT_OPERATION))
.setHeader(HazelcastConstants.OBJECT_ID, constant(LAST_FLIGHT_UPDATE_SEQ))
.to("hazelcast:map:MyNumber")
;
对于标记为 2 的行,我想将交换的副本发送到storeInHazelcast
路由。
首先,我试过.multicast()
了,但交换体仍然搞砸了(到-1)。
// shouldnt this copy the exchange?
.multicast().to("direct:storeInHazelcast").end()
然后我尝试.wireTap()
了 ,它作为“即发即弃”(异步)模式工作,但我实际上需要它来阻止,并等待它完成。你可以制作wireTap块吗?
// this works but I need it to be sync processing (not async)
.wireTap("direct:storeInHazelcast").end()
所以我在这里寻找一些提示。据我所知,multicast()
应该复制了交换,但setBody()
在我的storeInHazelcast
路线中看到搞砸了原来的交换。
或者,也许还有其他方法可以做到这一点。
提前致谢。骆驼 2.10