.
1 圖解
2 代碼
url:
https://github.com/3748/RabbitMq.git
package:
com.test.rabbitmq.work
3 代碼介紹
3.1 引入必須依賴
pom.xml
3.2 獲取MQ連接
com.test.rabbitmq.util.ConnectionUtil
3.3 消息消費者1
com.test.rabbitmq.work.WorkConsumer1
3.4 消息消費者2
com.test.rabbitmq.work.WorkConsumer2
3.5 消息生產者
com.test.rabbitmq.work.WorkProducer
3.6 啓動生產者
先將兩個消費者啓動
生產50條消息,推送到隊列中
WorkConsumer2中每次獲取到消息後都Thread.sleep(1000)休眠一秒
WorkConsumer1消費的消息要多於WorkConsumer2
符合能者多勞原則
如果將消費者中channel.basicQos(1);註釋.兩個消費者將消費相同數量的消息
4 應用場景
1: 紅包
2: 大項目中的資源調度(任務分配系統不需知道哪一個任務執行系統在空閒,直接將任務扔到消息隊列中,空閒的系統自動爭搶)
3: 可以用來進行負載均衡
5 隱患
高併發情況下,默認會產生某一個消息被多個消費者共同使用,可以設置一個開關(syncronize,與同步鎖的性能不一樣) 保證一條消息只能被一個消費者使用