基本上,我希望立即响应SOAP请求,但也开始进一步处理。我所看到的是,在路线结束之前不会发送响应。换句话说:
from("cxf:bean:someEndpoint")
.to("seda:replySOAP")
.to("direct:ABCMessage");
from("seda:replySOAP")
.to("bean:soapReply?method=process").end();
from("direct:ABCMessage")
.process(new ConvertABCToNZFCY())
.to("bean:prelimNZFCYCall")
.end();
直到“direct:ABCMessage”完成后才会生成响应。我认为seda会指定异步处理。我也试过“vm:replySOAP”,指向一个单独的Camel Context,这没有帮助。
我也试过多播,但无济于事:
from("cxf:bean:someEndpoint")
.multicast().parallelProcessing()
.to("seda:replySOAP")
.to("direct:ABCMessage");
对我来说有用的是wireTap,但它看起来并不优雅:
from("cxf:bean:someEndpoint")
.wireTap("direct:ABCMessage")
.to("direct:replySOAP");
我必须使用JMS吗?
谢谢!
答案 0 :(得分:0)
您看到的行为是由于
.to("direct:ABCMessage");
在路线中。它是一个同步过程,即InOut
交换模式。可以使用jms但如果你只是为了避免窃听而使用它可能是一种矫枉过正。为什么你认为窃听不太优雅。