FanoutExchange交换机广播
这种方式是将消息发送给所有与这个交换机绑定的队列
@Configuration public class FanoutConfig { // 创建交换机 @Bean public FanoutExchange fanoutExchange(){ return new FanoutExchange("xxx.fanout"); } // 创建队列1 @Bean public Queue fanoutQueue1(){ return new Queue("fanout.queue1"); } // 绑定队列1 @Bean public Binding fanoutBinding1(Queue fanoutQueue1, FanoutExchange fanoutExchange){ return BindingBuilder.bind(fanoutQueue1).to(fanoutExchange); } // 创建队列2 @Bean public Queue fanoutQueue2(){ return new Queue("fanout.queue2"); } // 绑定队列2 @Bean public Binding fanoutBinding2(Queue fanoutQueue2, FanoutExchange fanoutExchange){ return BindingBuilder.bind(fanoutQueue2).to(fanoutExchange); } }
都绑定完了之后监听队列
@Component public class SpringRabbitListener { @RabbitListener(queues = "fanout.queue1") public void ListenFanoutQueue1(String msg) { System.out.println("fanout.queue1接收到消息【" + msg + "】"); } @RabbitListener(queues = "fanout.queue2") public void ListenFanoutQueue2(String msg) { System.out.println("fanout.queue2接收到消息【" + msg + "】"); } }
消息发送者发送消息
public void testSendFanoutExchange(){ // 交换机名称 String exchangeName = "xxx.fanout"; // 要发送的消息 String msg = "hello every one"; rabbitTemplate.convertAndSend(exchangeName, "", msg); }