Apache Camel 中的多播
Multicast in Apache Camel
我是 Apache Camel 的新手,所以请原谅我的愚蠢问题。
我正在浏览使用多播发送消息的示例,但我看不懂。
我知道(在网络层)多播源向订阅者发送数据报到从 224.0.0.0 到 239.255.255.255 范围内的指定地址,但多播源“不知道”有多少订阅者,只有一个数据报发送给任何订阅者。
我不理解文档中的示例 (https://camel.apache.org/components/latest/eips/multicast-eip.html#_multicast_example) or from here (https://www.javarticles.com/2015/05/apache-camel-multicast-examples.html)。
为什么(如果我理解正确的话)消息的订阅者被明确指定("direct: a"、"direct: b"、"direct: c")?
毕竟,某一时刻可能有 3 个,而另一时刻可能有 10 个,依此类推。我认为我不需要更改代码并定义例如"direct:10",我说得对吗?
Apache Camel 多播与网络层多播的含义是否不同?
是的,这不一样。多播EIP是一种同时向N个收件人发送消息的方式(其中收件人数量提前fixed/known)。
是的,您正确理解了网络层多播和 apache 骆驼多播之间的区别。
骆驼多播的用例是当您想要向多个端点发送相同消息时。所以在文档的例子中:
from("direct:a").multicast().to("direct:x", "direct:y", "direct:z");
来自“direct:a”的相同 消息将发送到所有三个端点。并且“目的地”端点的数量是为每条路线定义的,并且对于不同的路线可能不同。
请注意,在以下情况下:
from("direct:a").to("direct:x").to("direct:y")
您正在链接处理消息。 “direct:a”的结果将发送到“direct:x”,而“direct:x”的结果将发送到“direct:y”,因此“direct:y”可以得到与“direct”不同的消息:x".
我是 Apache Camel 的新手,所以请原谅我的愚蠢问题。 我正在浏览使用多播发送消息的示例,但我看不懂。
我知道(在网络层)多播源向订阅者发送数据报到从 224.0.0.0 到 239.255.255.255 范围内的指定地址,但多播源“不知道”有多少订阅者,只有一个数据报发送给任何订阅者。
我不理解文档中的示例 (https://camel.apache.org/components/latest/eips/multicast-eip.html#_multicast_example) or from here (https://www.javarticles.com/2015/05/apache-camel-multicast-examples.html)。 为什么(如果我理解正确的话)消息的订阅者被明确指定("direct: a"、"direct: b"、"direct: c")? 毕竟,某一时刻可能有 3 个,而另一时刻可能有 10 个,依此类推。我认为我不需要更改代码并定义例如"direct:10",我说得对吗?
Apache Camel 多播与网络层多播的含义是否不同?
是的,这不一样。多播EIP是一种同时向N个收件人发送消息的方式(其中收件人数量提前fixed/known)。
是的,您正确理解了网络层多播和 apache 骆驼多播之间的区别。
骆驼多播的用例是当您想要向多个端点发送相同消息时。所以在文档的例子中:
from("direct:a").multicast().to("direct:x", "direct:y", "direct:z");
来自“direct:a”的相同 消息将发送到所有三个端点。并且“目的地”端点的数量是为每条路线定义的,并且对于不同的路线可能不同。
请注意,在以下情况下:
from("direct:a").to("direct:x").to("direct:y")
您正在链接处理消息。 “direct:a”的结果将发送到“direct:x”,而“direct:x”的结果将发送到“direct:y”,因此“direct:y”可以得到与“direct”不同的消息:x".