上一篇:springboot整合rabbitMQ模擬簡單收發消息
https://blog.csdn.net/m0_67930426/article/details/134904766
本篇代碼基于上一篇繼續寫
目錄
Fanout 交換機
1. add?queue
2. add Exchange
3.綁定隊列
Direct 交換機
1. add queue
?2. add Exchange
3.綁定隊列,并設置Routing key?
Topic 交換機
1.add queue
2.add Exchange
3.綁定隊列
Fanout 交換機
fanout exchange 會將接收到的消息廣播到每一個跟其綁定的queue
1. add?queue
2. add Exchange
3.綁定隊列
?
?消費者監聽隊列
@RabbitListener(queues = "fanout.queue1")public void eee(String msg){System.out.println("消費者e收到了fanout.queue1的消息:【"+msg+"】");}@RabbitListener(queues = "fanout.queue2")public void fff(String msg){System.err.println("消費者f收到了fanout.queue2的消息:【"+msg+"】");}
?
?單元測試模擬業務發送消息
@Testvoid Test3Send(){String ExchangeName = "aaa.fanout";String msg = "rabbitMQ<消息隊列>";rabbitTemplate.convertAndSend(ExchangeName,null, msg);}
?
Direct 交換機
Direct Exchange 會將接收的消息根據規則路由到指定的queue
1. add queue
?2. add Exchange
?
3.綁定隊列,并設置Routing key?
?
??消費者監聽隊列
@RabbitListener(queues = "direct.queue1")public void ggg(String msg){System.out.println("消費者g收到了fanout.queue1的消息:【"+msg+"】");}@RabbitListener(queues = "direct.queue2")public void hhh(String msg){System.err.println("消費者h收到了fanout.queue2的消息:【"+msg+"】");}
?單元測試模擬業務發送消息
@Testvoid Test3Send() {String ExchangeName = "bbb.direct";String msg = "rabbitMQ<消息隊列>";rabbitTemplate.convertAndSend(ExchangeName,"red" , msg);}
Routing key:? " red "
預期結果是,兩個消費者都收到了消息
?
將Routing key 的值改為blue?
?
預期結果,只有消費者g接收到了消息
?
Topic 交換機
1.add queue
2.add Exchange
3.綁定隊列
?
?
消費者監聽隊列?
@RabbitListener(queues = "topic.queue1")public void jjj(String msg){System.out.println("消費者j收到了fanout.queue1的消息:【"+msg+"】");}@RabbitListener(queues = "topic.queue2")public void kkk(String msg){System.err.println("消費者k收到了fanout.queue2的消息:【"+msg+"】");}
?單元測試模擬業務發送消息
@Testvoid Test3Send() {String ExchangeName = "ccc.topic";String msg = "rabbitMQ";rabbitTemplate.convertAndSend(ExchangeName,"zhejiang.new" , msg);}
Routing key : " zhejiang.new "?
預期結果是k收到消息
?
Routing? key: " china.new "
預期結果,兩個消費者都接收到了消息
?