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), 代碼實現-消息生產者

    /**
     * 分裂模式
     */
    @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的分裂者模式方法,控制顯示如下

 

 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章