首页 > 解决方案 > 如何实现有关多播的路由?

问题描述

我有下面的场景。

  1. 从客户端系统请求 Web 服务。这个请求是文件将被复制。
  2. 在应用程序中接收 cxf 组件的请求。
  3. 收到请求后立即响应表示成功的返回码。
  4. 发送响应后,应用程序将获取文件。

所以,我实施了路线。

<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>

我遇到了一些问题。最初,我认为该响应将由 returnMsg Bean 返回。但是在文件完全处理之前,响应消息没有响应。我希望消息立即传递给客户。同时,我希望处理这些文件。

我应该如何实现一个路由来实现我的场景?请让我知道这个解决方案。

谢谢你。

标签: apache-camel

解决方案


如果您希望您的“直接”路线彼此独立执行,请考虑使用wireTap

<route>
    <from uri="cxf:bean:FileTransferServiceEndPoint"/>
    <wireTap uri="direct:bean"/>
    <to uri="direct:fetchFile"/>
</route>

来自“行动中的骆驼”一书:

通过使用 Java DSL 中的 wireTap 方法,您可以将交换的副本发送到辅助目的地,而不会影响路由其余部分的行为


推荐阅读