👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,双非大四,Java实习中…”);
📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正!共同进步,共同成长✊”);
🌟System.out.println(“💡如果文章对您有所帮助,希望您可以三连支持一下博主噢🔥”);
🌈System.out.println("🚀正在完成计划中:接下来的三个月里,对梦想的追逐 ");
文章目录
- Fanout交换机
- 模拟使用 FanoutExchange
- 发送者(生产者)
- 消费者
- 交换机的作用
- 最后
Fanout交换机
交换机具有路由转发功能
真正生产环境都会经过exchange来发送消息,而不是直接发送到队列,交换机的类型有以下三种:
- Fanout:广播
- Direct:定向
- Topic:话题
Fanout Exchange 会将接收到的消息广播到每一个跟其绑定的queue,所以也叫广播模式
模拟使用 FanoutExchange
利用SpringAMQP演示的使用,实现思路如下
- 在RabbitMQ控制台中,声明队列fanout.queue1和fanout.queue2
- 在RabbitMQ控制台中,声明交换机fanoutTest.fanout,将两个队列与其绑定
- 在consumer服务中,编写两个消费者方法,分别监听fanout.queue1和fanout.queue2
- 在publisher中编写测试方法,向fanoutTest.fanout发送消息
发送者(生产者)
@SpringBootTest
public class SpringAmqpTest {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testpublic void testSendMessage2FanoutQueue() {String exchangeName = "fanoutTest.fanout";String msg = "hello, exchangeName_fanoutTest, message: everyOne" ;rabbitTemplate.convertAndSend(exchangeName, null, msg);}
}
消费者
@Component
@Slf4j
public class RabbitMqListener {@RabbitListener(queues = "fanout.queue1")public void listenFanoutQueueMessage1(String msg) {log.info("fanoutConsumer1 accept message: {}", msg);log.info("fanoutConsumer1 message success!");}@RabbitListener(queues = "fanout.queue2")public void listenFanoutQueueMessage2(String msg) {log.info("fanoutConsumer2 accept message: {}", msg);log.info("fanoutConsumer2 message success!");}
}
交换机的作用
- 接收publisher发送的消息
- 将消息按照规则路由到与之绑定的队列
- 有队列与FanoutExchange绑定,该消息会被路由到每个绑定的队列
- FanoutExchange通常用于广播消息的场景,如日志处理、实时数据更新等。
最后
慢慢的来,别着急!学会有质量的走过每一步
我是代码不会敲的小符,希望认识更多有经验的大佬,也在努力摸索出自己的道路
欢迎添加小符微信:A13781678921,一起加油