假设我有一条将输入多播到多个处理器的路由。
当前行为:
控制台等待来自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/