一个队列可以订阅(监听)Rabbit MQ中的另一个队列吗

时间:2019-06-07 04:03:38

标签: rabbitmq spring-amqp spring-rabbitmq

我们有2个Rabbitmq经纪人。

我们发布到Broker1的队列A,Broker2的队列B可以直接订阅队列A,这样就没有等待时间了,例如为它编写处理程序(使用@rabbitListener)然后发布到另一个队列。 / p>

我的问题是Broker2可以使用任何仲裁处理程序直接订阅broker1还是broker2(另一个队列)可以直接使用broker1中的队列数据?有可能吗?

如果是,如何通过spring-amqp实现它?

注意:两个RabbitMq代理在意义上是2个不同的Rabbitmq服务器

3 个答案:

答案 0 :(得分:0)

  • 您无法发布到队列,只能发布到交换
  • 队列可以绑定到交换,但不能绑定到单个RabbitMQ实例中的队列。
  • 要将消息从队列A移动到代理2,您将必须实现一些小型应用程序,该应用程序使用队列A中的消息并将其发布到代理2上的交换。

答案 1 :(得分:0)

queue无法从另一个队列使用。 RabbitMQ中的工作单位为consumer。有两种方法可以解决您的问题:

解决方案1 ​​: 使用两个服务器创建RabbitMQ服务器集群。使用扇出交换将相同的消息路由到两个队列。

解决方案2 : 创建一个从队列1进行消费的使用者,然后将相同的消息重新排队到队列1和队列2。

如果您希望消息同时出现在两个队列中,请遵循解决方案1 ​​。如果您要移动邮件(而不是复制邮件),请按照解决方案2

希望这会有所帮助!。

答案 2 :(得分:0)

我们有队列联合的概念,其中队列将消息传输到其他队列。联邦队列的主要目的是平衡RabbitMQ代理之间的负载。此处,使用者将连接到下游队列并从中接收消息,一旦下游队列为空,并且当使用者尝试使用来自下游队列的消息时,来自上游队列的消息将被传输到下游队列,以满足使用者的需求。 在这里请注意,消息仅按需发送到下游队列,如果消费者不要求消息,则消息将不会发送到下游。

与使用群集相比,联邦具有主要优势。