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
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