multicast() 究竟做了什么?

What exactly does multicast() do?

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

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

?

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

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

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