Qpid相当于RabbitMQ firehose?

时间:2015-11-19 21:34:10

标签: rabbitmq messaging amqp qpid

我一直在努力寻找一种方法将来自Qpid Exchange的消息转发到另一个队列以进行测试/监控。我注意到那里的RabbitMQ用户有similar problem,解决方案似乎是RabbitMQ的Firehose功能。 Qpid中有类似的解决方案吗?

这里有一些好奇的细节。

  • 让我们将Exchange称为“App.Ex”,并通过它为另一个预定的收件人发送消息(让我们称他为“Bob”)
  • 我连接到App.Ex,启动会话,启动接收器,并开始提取(使用改编自QPID Book的“Python中的简单消息传递程序”)
  • 我开始看到我想看到的消息。但是,在这样做的过程中,我已经抢夺了Bob所需要的消息!

所以有一点问题,我怎样才能得到CC给我的消息,但Bob还是会收到他的消息?

我有权修改消息传递配置,因此如果需要,我可以创建自己的队列和交换。赞赏的想法!

1 个答案:

答案 0 :(得分:1)

直接交换可能是最合适的,因为您可以拥有一些类似CC行为的队列,而某些队列没有,您可以在实时交换中随时更改它。

您可以将两个队列绑定到同一主题/路由键。当消息与特定主题/路由密钥一起发送到交换机时,两个绑定队列都将接收相同消息的副本。

enter image description here

两个队列bar1bar2都绑定到routing_key foo。当生产者B使用routing_key = foo向交易所发布消息时,bar1bar1都会收到所有消息的副本。

询问您是否需要创建交换和适当绑定的命令。

然而,还有更多方法可以做同样的事情:

您还可以使用主题队列实现类似行为,并在主题名称上使用完全匹配

enter image description here

最后,您还可以使用扇出交换,在您发送到队列的任何邮件中,副本将路由到绑定到交换机的所有队列。

请注意,所有这些交换类型都来自AMQP规范,因此它们不是特定于qpid的,您可以在任何AMQP实现中执行相同或类似的操作。