multicast()究竟做了什么?

时间:2015-06-18 09:57:36

标签: apache-camel

之间的确切区别是什么
from("stream:in")
.to("stream:out", "stream:err");

from("stream:in")
.multicast()
.to("stream:out", "stream:err");

1 个答案:

答案 0 :(得分:4)

在这种情况下 - 没有真正的区别,因为stream驼峰组件的传入消息体似乎总是作为传出消息体向前发送;)

想象一下更具实质性的案例,例如:

from("stream:in")
    .to("direct:one", "direct:two");

在这种情况下,流上收到的任何内容都会首先发送到路由direct:one。现在,如果该路由以某种方式修改消息(例如setBody(constant("modified")),则路由direct:two将从路由direct:one收到已修改的外发消息。

这样想:stream:in - > direct:one - > direct:two

<强>组播

from("stream:in")
    .multicast()
    .to("direct:one", "direct:two");

相反,对于多播,流上收到的任何内容都会首先发送到direct:one,并且流中的相同邮件正文(作为副本)会发送到direct:two - 无论是什么direct:one设置为其外发邮件正文。

我们可以想到这样的多播:

stream:in -----> direct:one
          \----> direct:two