RabbitMQ的备份交换器

一:介绍

生产者将生产的消息发送到交换器,如果由于路由错误不能到达指定队列,那么就会被发送到备份交换器,进而路由到备份队列存储起来,以便供以后消费处理;这样做可以保证未被路由的消息不会丢失。其实保证消息不会丢失还可以通过设置mandatory参数为true,让生产者添加ReturnListener监听器的编程逻辑,来接收未被路由的消息;但是这样做生产者的代码会更复杂,所以我们可以使用备份交换器来处理这类消息。

二:示意图

三:备份交换器类型

备份交换器和普通交换器其实一样,为了方便使用,建议类型设置为 fanout 类型;也可以设置direct或者topic,但是需要注意的是:消息被重新发送到备份交换器时的路由键和从生产者发出的路由键是一样的,所以备份交换器和备份队列的绑定键要匹配上消息发出时的路由键;其实我们设置备份交换器的目的就是为了在消息的路由键没有匹配上时来接收这类“无家可归”的消息,所以没必要将类型设置为direct或者topic。

四:备份交换器的特殊情况

(1)设置的备份交换器不存在

(2)备份交换器没有绑定任何队列

(3)备份交换器没有任何匹配的队列

以上三种情况,客户端和服务端都不会出现异常,“无家可归”的消息会丢失。

(4)如果配置了 mandatory 参数和备份交换器一起用,那么参数无效。

原文地址:https://www.cnblogs.com/hzcya1995/p/13302422.html