队列可以订阅(侦听)兔子 mq 中的另一个队列吗?



我们有2个rabbitmq经纪人。

我们发布到代理 1 的队列 A,经纪人 2 的队列 B 是否可以直接订阅队列 A,这样就不会有延迟,以防为它编写处理程序(使用 @rabbitListener(然后发布到另一个队列。

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

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

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

我们有队列联合的概念,其中队列将消息传输到其他队列。联合队列的主要目的是在 RabbitMQ 代理之间平衡负载。在这里,消费者将连接到下游队列并消费来自它的消息,一旦下游队列为空,当消费者尝试消费来自下游队列的消息时,来自上游队列的消息将被传输到下游队列以满足消费者的需求。这里注意消息只按需传输到下游队列,如果消费者对消息没有要求,那么消息就不会传输到下游。

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

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

queue不能从另一个队列使用。RabbitMQ的工作单位是consumer。有一些方法可以解决您的问题:

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

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

如果您希望消息同时存在于两个队列中,请遵循解决方案 1。如果要移动消息(不复制(,请按照解决方案2进行操作。

希望这有帮助!.

最新更新