消息生產者p將消息放入隊列
消費者監聽隊列,如果隊列中有消息,就消費掉,消息被拿走后,自動從隊列刪除
(缺點:消息可能沒有被消費者正確處理,已經消失了,無法恢復)
應用場景:聊天室
1.引入依賴
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2.創建鏈接工具類
3.生產者
4.消費者
生產者將消息放入隊列
多個消費者同時監聽同一個隊列,消息如何被消費?
C1,C2共同爭搶當前消息隊列的內容,誰先拿到消息,誰來負責消費
應用場景:紅包;大型項目中的資源調度過程(直接由最空閑的系統爭搶到資源處理任務)
1.生產
2.消費1
3.消費2
生產者將消息交給交換機
有交換機根據發布訂閱的模式設定將消息同步到所有的綁定隊列中;
后端的消費者都能拿到消息
應用場景:郵件群發,群聊天,廣告
1.生產者
2.消費者1
2.消費2
生產者發送消息到交換機,同時綁定一個路由Key,交換機根據路由key對下游綁定的隊列進行路
由key的判斷,滿足路由key的隊列才會接收到消息,消費者消費消息
應用場景: 項目中的error報錯
1.生產者
2.消費者1
2.消費者2
*號代表單個詞語
#代表多個詞語
其他的內容與routing路由模式一致
1.生產者
2.消費者1
3.消費者2