Apache camel 如何实现有关多播的路由?

Apache camel 如何实现有关多播的路由?,apache-camel,Apache Camel,我有下面的场景 从客户端系统请求Web服务。此请求表示将复制该文件 接收应用程序中cxf组件的请求 在收到请求后立即响应表示成功的返回代码 发送响应后,应用程序将获取文件 所以,我实施了这条路线 <route> <from uri="cxf:bean:FileTransferServiceEndPoint"/> <multicast parellelProcessing="true"> <toD uri="direct:b

我有下面的场景

  • 从客户端系统请求Web服务。此请求表示将复制该文件
  • 接收应用程序中cxf组件的请求
  • 在收到请求后立即响应表示成功的返回代码
  • 发送响应后,应用程序将获取文件
  • 所以,我实施了这条路线

    <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复制交换时,您不必担心流