Apache camel 如何实现有关多播的路由?
我有下面的场景Apache camel 如何实现有关多播的路由?,apache-camel,Apache Camel,我有下面的场景 从客户端系统请求Web服务。此请求表示将复制该文件 接收应用程序中cxf组件的请求 在收到请求后立即响应表示成功的返回代码 发送响应后,应用程序将获取文件 所以,我实施了这条路线 <route> <from uri="cxf:bean:FileTransferServiceEndPoint"/> <multicast parellelProcessing="true"> <toD uri="direct:b
<route>
<from uri="cxf:bean:FileTransferServiceEndPoint"/>
<multicast parellelProcessing="true">
<toD uri="direct:bean"/>
<toD uri="direct:fetchFile"/>
</multicast>
</route>
<route>
<from uri="direct:bean"/>
<bean method="process" ref="returnMsg"/>
<end>
</route>
<route>
<from uri="direct:fetchFile"/>
<pollEnrich>
<simple>file:/test/inBox</simple>
</pollEnrich>
<toD uri="file:/test/outBox"/>
</route>
文件:/test/收件箱
我面临着一些问题。
最初,我认为响应将由returnmsgbean返回。
但直到文件被完全处理后,响应消息才被响应。
我希望消息立即传递给客户。同时,我想处理这些文件
我应该如何实现一个路线来实现我的场景?
请让我知道这个解决方案
谢谢。
< P>如果你想让你的“直接”路由彼此独立执行,考虑使用<代码>窃听< /COD><route>
<from uri="cxf:bean:FileTransferServiceEndPoint"/>
<wireTap uri="direct:bean"/>
<to uri="direct:fetchFile"/>
</route>
从“骆驼行动”一书中:
通过在JavaDSL中使用wireTap方法,您可以发送exchange的副本
在不影响路由其余部分行为的情况下,发送到次要目的地
考虑使用SEDA组件(查看waitForTaskToComplete选项)或WireTap EIP(它生成消息的“lite”副本,但您可以自定义其行为)来获取文件 PS 1.:注意使用
poll
时不要设置超时。
PS 2:根据您接收正文消息的方式,您可能会因为多次使用它而面临流关闭问题,因为您最终会在多播中使用它。我正在考虑对这个问题进行无线监听。但我不明白你说的第二个问题。请让我知道关于第二个的详细情况。谢谢。这可能会帮助您理解:当您使用wireTap复制交换时,您不必担心流