java - Camel 组播不工作

标签 java apache-camel routes multicast

这里是 Camel 2.11.0。我有以下 Camel 路线:

<route id="main-route"> 
    <from uri="timer://runOnce?repeatCount=1&amp;delay=10" /> 

    <to uri="bean:loggingBean?method=main" />

    <to uri="bean:processorBean?method=doSomething" />

    <to uri="bean:loggingBean?method=afterProcessing" />

    <multicast> 
        <to uri="direct:validator" />
        <to uri="direct:rejector" /> 
    </multicast> 
</route>

<route id="validator-route"> 
    <from uri="direct:validator" />
    <to uri="bean:loggingBean?method=validator" />
</route>

<route id="rejector-route"> 
    <from uri="direct:rejector" /> 
    <to uri="bean:loggingBean?method=rejector" />
</route>

...其中loggingBean看起来像:

public class LoggingBean {
    public void main(Exchange e) {
        System.out.println("Starting main route...");
    }

    public void afterProcessing(Exchange e) {
        System.out.println("Processing input...");
    }

    public void validator(Exchange e) {
        System.out.println("In validator route...");
    }

    public void rejector(Exchange e) {
        System.out.println("In rejector route...");
    }
}

当我运行此代码时,我得到以下控制台输出:

Starting main route...
Processing input...
In validator route...

因为我们在这里进行多重类型转换,所以我希望它也包括拒绝器的输出,看起来像:

Starting main route...
Processing input...
In validator route...
In rejector route...

因此,Multicaster 似乎仅发送到嵌套在其中的第一个元素(在 Spring XML 中),而不发送到第二个元素。嗯,有趣。所以然后我改变了 <multicast>元素如下所示:

<multicast> 
    <to uri="direct:rejector" /> 
    <to uri="direct:validator" />
</multicast> 

这次控制台输出如下:

Starting main route...
Processing input...
In rejector route...

因此这已得到证实:<multicast>仅将交换广播到其下方列出的第一个子元素。 为什么以及如何解决这个问题?

最佳答案

关于java - Camel 组播不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21461075/

相关文章:

c# - 为什么我们应该避免公共(public)方法?封装的好处

java - 如何判断浏览器何时关闭?

java - 如何模拟返回模拟对象的方法

ruby-on-rails - Rails 缺少模板

vue.js - 在 vuejs 中使用转换时固定元素在屏幕上跳转

java - Hive UDF、Java 基元和 null

java - Apache Camel Chronicle 组件 [已弃用]

properties - Camel Exchange 属性不使用 xml 中的简单进行评估

java - 我如何在 OSGi 容器(JBoss Fuse)中使用 Camel mina hl7codec

javascript - 切换子组件时如何隐藏父组件