如何在调用其他处理时立即响应Camel中的SOAP消息?

如何在调用其他处理时立即响应Camel中的SOAP消息?,soap,cxf,apache-camel,Soap,Cxf,Apache Camel,基本上,我希望立即响应SOAP请求,但同时启动进一步的处理。我看到的是,直到路由结束,才会发送响应。换言之: from("cxf:bean:someEndpoint") .to("seda:replySOAP") .to("direct:ABCMessage"); from("seda:replySOAP") .to("bean:soapReply?method=process").end(); from("direct:ABCMessage") .process

基本上,我希望立即响应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上下文,但这没有帮助

我也尝试过多播,但没有成功:

from("cxf:bean:someEndpoint")
    .multicast().parallelProcessing()
    .to("seda:replySOAP")
    .to("direct:ABCMessage");
对我有用的是窃听,但它看起来并不优雅:

from("cxf:bean:someEndpoint")
    .wireTap("direct:ABCMessage") 
    .to("direct:replySOAP");
我必须使用JMS吗


谢谢

您看到的行为是由于

.to(“direct:ABCMessage”)


在路线上。这是一个同步过程,即
InOut
交换模式。可以使用jms,但如果您只是为了避免窃听而使用它,那么这可能是一种过度使用。为什么您认为wiretap看起来并不优雅。

行动中的骆驼书谈到了调试或即时消息检查方面的wiretap。我本以为分叉一个异步进程将是Camel中的一件基本事情,但我没有做到。我想是窃听吧!谢谢