什么是分裂(Fanout)模式?
- 当我们需要将消息一次发送给多个队列时,需要使用这种设计模式。如下图
- 任何发送到 Fanout Exchange 的消息都会被转发到与该Exchange绑定(Binding)的所有Queue上。
- 可以理解为路由表的模式。
- 这种模式不需要RouteKey。
- 这种模式需要提前将 Exchange 与 Queue 进行绑定,一个Exchange可以绑定多个Queue,一个Queue可以同多个Exchange进行绑定。
- 如果接受到消息的Exchange没有与任何Queue绑定,则消息会被抛弃。
1),在Queue中添加队列 itcast , itheima 和ittest,如下
2),新建交换器(Exchange) chuanzhi ,如下
3),点进去 chuanzhi 点击Bindings 绑定队列
4),接下来用代码来实现分裂模式(Fanout)
4-1), 代码实现-消息生产者
扫描二维码关注公众号,回复:
10564916 查看本文章
/**
* 分裂模式
*/
@Test
public void sendDivisionMsg(){
rabbitTemplate.convertAndSend("chuanzhi","","分裂者模式走起");
}
4-2),创建消息监听类,用于监听
itheima
的消息
@Component
@RabbitListener(queues = "itheima")
public class Consumer1 {
@RabbitHandler
public void getMessage(String msg) {
System.out.println("itheima" + msg);
}
}
监听ittest的消息
@Component
@RabbitListener(queues = "ittest")
public class Consumer2 {
@RabbitHandler
public void getMessage(String msg) {
System.out.println("ittest" + msg);
}
}
监听itcast的消息
@Component
@RabbitListener(queues = "itcast")
public class Consumer {
@RabbitHandler
public void getMessage(String msg) {
System.out.println("itcast" + msg);
}
}
5),测试如下
运行springtboot项目 , 运行test的分裂者模式方法,控制显示如下