RabbitMQ的分列模式(Fanout)

什么是分裂(Fanout)模式?

  • 当我们需要将消息一次发送给多个队列时,需要使用这种设计模式。如下图

               

  • 任何发送到 Fanout Exchange 的消息都会被转发到与该Exchange绑定(Binding)的所有Queue上。
  1. 可以理解为路由表的模式。
  2. 这种模式不需要RouteKey。
  3. 这种模式需要提前将 Exchange 与 Queue 进行绑定,一个Exchange可以绑定多个Queue,一个Queue可以同多个Exchange进行绑定。
  4. 如果接受到消息的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的分裂者模式方法,控制显示如下

 
 
 
 
发布了256 篇原创文章 · 获赞 188 · 访问量 65万+

猜你喜欢

转载自blog.csdn.net/qq_40646143/article/details/103321175