java - apache Camel 多播 - 以异步方式执行聚合

标签 java apache-camel multicast

假设我有一条将输入多播到多个处理器的路由。

当前行为:

控制台等待来自System.in流的一些输入,一旦给出一些输入,多播就会完成,但主线程会等待直到聚合完成。

预期行为:

我想要实现的是,主线程不应该等待聚合完成,而应该返回,并且主线程应该开始监听来自控制台的新输入,因为路由是 InOnly 输入并且不应该产生任何输出。

我尝试在路由中使用 parallelProcessing="true"setExchangePattern pattern="InOnly" 来影响行为,但多播处理器始终等待聚合任务完成然后主线程才会从控制台获取其他输入。

<route>
      <from uri="stream:in?promptMessage=Enter something: "/>
      <setExchangePattern pattern="InOnly"/>
      <multicast parallelProcessing="true">
        <pipeline>
            <transform>
                <simple>${body.toUpperCase()}</simple>
            </transform>
            <!-- and then print to the console -->
            <to uri="stream:out"/>  
        </pipeline>
        <to uri="stream:out"/>
      </multicast>
</route>

这可以通过多播实现吗?还是有其他方法可以实现这一点?

最佳答案

看看 Apache Camel 提供的其他 EIP。我们的想法不是使用单个 super EIP,而是每个 EIP 都提供独特的功能,并且您可以将它们一起使用来构建集成解决方案。

例如,您可以看一下窃听,它允许独立于原始消息路由复制消息。

关于java - apache Camel 多播 - 以异步方式执行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23932393/

相关文章:

java.net.SocketTimeoutException : Read timed out error when trying to read from table

java - 使用数据报 channel 时无法访问端口

jms - 如何根据消息头属性只读取特定的队列消息

delphi - 向同一台计算机上的多个客户端发送多播消息

tomcat - 多播时出现 Permgen 错误

java - Play 2 : @ManyToOne field does not exist in DB table

java - 为什么我得到 DefaultHttpClient is deprecated?

java - Apache Camel 不在源文件夹中保留文件

spring - Camel 不在 Spring 开始

java - 没有多播的tomcat session 复制