首页 文章

AMQP QPID中的网络流量

提问于
浏览
0

QPID AMQP

我有一个问题重新调整网络流量 . 假设我在机器A上有一个发布者 . Qpid代理正在机器B上运行 . 我们有两个订户机器C和机器D(他们都订阅相同的主题) . 现在想象一下拓扑在哪里
A - > B - > X - > C | D(发布者A连接到B,订阅者C和D连接到Broker通过和中间节点X)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,但它看起来很复杂,因为中间跃点如何知道何时发送多个副本(我不是网络专家所以我可能会想念一些obvoius,所以任何帮助真的很感激)

2 回答

  • 1

    我假设X是另一个Qpid代理,通过“联合”功能连接到B.在这种情况下,消息将不会从B传输两次到X.

    您可以通过不同的方式对其进行配置,具体取决于方案的其他要求 .

    第一种是将X静态链接到B:你在B上创建一个队列,让X订阅,将Q绑定到有问题的交换机,使得C和D的消息都匹配,然后使用qpid-route创建一个桥从该队列到X上的交换.C和D现在连接并绑定到X上的交换,并将按预期接收A发布的消息 . 在这种情况下,无论C或D是否处于活动状态,消息总是从B流向X.如果添加另一个使用者E,则可能需要在B上静态添加绑定到brdiged队列 .

    第二种选择是使用动态路由 . 这将自动处理从X到B的绑定信息的传播,使得如果X上的活动绑定需要消息,则消息将仅从B流到X.

  • 0

    RabbitMQ也只会通过一次中间链接传播消息(如果某些下游消费者实际上最终会看到该消息,它将只会被发送) .

相关问题