【发布时间】:2012-04-17 17:56:38
【问题描述】:
QPID AMQP
我有一个关于重新调整网络流量的问题。假设我在 Machine A 上有一个 Publisher。 Qpid 代理正在 Machine B 上运行。我们有两个订阅者机器 C 和机器 D(他们都订阅相同的主题)。现在想象一个拓扑,其中
A-->B-->X-->C
|
D
(发布者 A 连接到 B,订阅者 C 和 D 通过中间节点 X 连接到 Broker)
由 A 发布的与 C 和 D 的主题匹配的消息将被两者接收。我想知道的是边缘 b->x 是否会携带消息两次(一次用于 b->x->c,第二次b->x->c) 的时间。或者 AMQP/qpid 框架是否足够智能,可以从 B 向 X 发送一次消息,然后向每个单独的订阅者发送副本(因此 b->x 上的网络流量更少)。
我的想法是,由于 X 什么都不知道,并且如果我们为每个订阅者都有私有订阅队列(或者即使共享队列和浏览/复制消息而不是消费),消息将通过 b->x
此问题并非特定于 QPID 。我想知道其他基于 Broker(RabbitMQ)和无代理消息传递框架(Zero MQ,LBM/UMS)的解决方案。我在一篇文章中读到 Zero Mq 试图提供更智能的解决方案 http://www.250bpm.com/pubsub#toc4 ,但这似乎很复杂,因为中间跃点如何知道何时发送多个副本(我不是网络专家,所以我可能会遗漏一些明显的东西,所以任何帮助将不胜感激)
【问题讨论】:
标签: network-programming rabbitmq zeromq messagebroker qpid