有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Camel多播不起作用

骆驼2.11.0在这里。我有以下骆驼路线:

<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>只将交换广播给它下面列出的第一个子元素为什么,我该如何解决这个问题


共 (2) 个答案

  1. # 2 楼答案

    我测试了你的路线,一切正常:

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

    这个日志

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

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

    这个日志

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

    也许,你读错了骆驼配置