RabbitMQ同一交换机与队列多绑定为何仅收到一条消息?
同队列与Topic交换机多绑定仅收单条消息的原因
核心原因分两种场景:
- 绑定关系完全重复:如果两条绑定的交换机(
test-exchange)、队列(test-queue)、绑定键、以及绑定参数完全一致,RabbitMQ会自动忽略重复的绑定请求,不会实际创建第二条绑定路径。消息只会通过唯一有效的绑定路由到队列一次。 - 绑定键不同但都匹配路由键,却只收单条:这种情况大概率是队列启用了消息去重机制。比如队列创建时设置了
x-message-deduplication参数,或者发送消息时指定了唯一的message-id属性,RabbitMQ会自动过滤掉重复投递的同一条消息。
补充说明:默认情况下,若队列通过多个不同的、能匹配路由键的绑定键关联到Topic交换机,消息会被多次投递到队列。如果没出现这种情况,优先检查绑定是否重复,再排查队列的去重配置或消息属性。
内容的提问来源于stack exchange,提问作者user3908406
相关产品推荐
相关产品推荐

