提问者:小点点

Qpid相当于RabbitMQ Firehose?


我一直试图找到一种方法来CC消息从一个Qpid交换到另一个队列,用于测试/监控目的。我注意到一个RabbitMQ用户也有类似的问题,解决方案似乎是RabbitMQ的Firehose功能。Qpid中有类似的解决方案吗?

这里有一些更多的细节给好奇的人。

  • 让我们将Exchange称为“App. Ex”,并通过它为其他单个预期收件人(让我们称他为“Bob”)流转消息
  • 我连接到App. Ex,启动会话,启动接收器,并开始获取(使用改编自QPID Book的《Python中的简单消息传递程序》的代码)
  • 我开始看到我想看到的消息。然而,这样做我剥夺了鲍勃需要的信息!

所以问题来了,我如何才能将消息抄送给我,但以鲍勃仍然收到他的消息的方式?

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


共1个答案

匿名用户

直接交换可能是最合适的,因为您可以有一些具有CC行为的队列和一些没有的队列,并且您可以在实时交换中随时更改它。

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

队列bar1bar2都绑定到routing_keyfoo。当生产者B使用routing_key=foo向交换机发送消息时,bar1bar1都会接收所有消息的副本。

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

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

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

最后,您还可以使用扇出交换,您发送到队列的任何消息,都会将副本路由到绑定到交换的所有队列。

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