背景说明:
有3个服务S1、S2、S3
现在服务S1需要发布消息到广播交换机E,并建立了两个普通队列Q1,Q2,将其绑定到广播交换机E上
服务S2和服务S3同时监听队列Q1,Q2
本意是,服务S1通过广播交换机E把消息同时推送给服务S2和S3
后面测试时,同事发现,服务S2和服务S3都只接收到了部分消息,而不是全部。
后面发现,广播交换机的广播对象是队列,而不是队列的消费者,而队列里面的一条消息只会发送给一个监听端,而不是群发,这就导致服务S2和服务S3均不能接收到全部消息。
rabbitMQ的设计都是以队列为基础,队列的消息分发只有轮询和公平分发两种策略,而广播/直连/主题交换机这些策略,仅针对交换机和队列之间的消息分发。
要实现消息广播,就必须每个消费端绑定一个单独的队列进行监听,然后将这个队列绑定到广播交换机,实现消息广播,或者通过信道创建临时队列接收消息。
生产端只需要将消息发布到广播交换机,而不需要关心消息会被发送到哪里。
标签:队列,S2,rabbitMQ,S3,广播,交换机,消息 From: https://www.cnblogs.com/zeromi/p/17901728.html