原文:https://blog.csdn.net/qiangcuo6087/article/details/79041997
ActiveMQ
1. 下載windows辦的activeMQ后,在以下目錄可以啟動:
spring
2. 啟動后會有以下提示
spring
3. 所以我們可以通過http://localhost:8161訪問管理頁面,通過tcp://localhost:61616來連接消息服務器,用到的用戶名和密碼都在以下文件中(默認為admin=admin)
spring
springboot連接ActiveMQ
1. 加入依賴:
spring-boot-starter-activemq
2. 配置連接屬性:
spring
消息的發送和接收
生產者/消費者模式
1. 創建生產者
spring
2. 創建消費者
spring
注意: @JmsListener是一個可重復的注解,在java7及以下版本jdk中,可以使用@JmsListeners代替它。
3. 測試類
spring
4. 運行測試
spring
發布/訂閱模式
1. 發布話題
spring
2. 訂閱話題
spring
注意: 在pub/sub模式中,對消息的監聽需要對containerFactory進行以下配置
spring
3. 測試
spring
spring
應用
按照以上步驟,在springboot中很容易就實現類兩種模式的消息發送和接收。但是jms具體的應用場景是在不同的應用程序之間,生產者和消費者往往是在不同的應用中的。此外,以上例子中的消息我們只發送字符串,其實還可以發送Object類型的消息,甚至可以使用messageCreator自定義消息的轉換,而不使用convertAndSend方法默認轉換。
多個應用程序之間發送消息
1. 先使用一個只有發送者,沒有消費者或訂閱者的應用發送兩類消息各十條
spring
spring
2. 我們打開localhost:8161,可以看到
spring
spring
兩類都曾有十條消息入隊,但只有queues中還存留10條消息。
3. 現在我們啟動包含消費者和訂閱者的應用程序
spring
果然,只有消費者收到了queues中的消息。
這說明訂閱者接收topic是需要在topic發布之前訂閱;而生產/消費模式下,消息發出后會存放在隊列中,等待消費者消費。
4. 我們先啟動兩個包含訂閱者和消費者的程序,再發布消息
spring
spring
spring
兩個訂閱者都收到 topic message 1~9, 而消費者中,一個收到消息 1、3、5、7、9,另一個收到0、2、4、6、8。
這說明有多個消息接收者時,生產/消費模式下多個消費者會輪流消費隊列中的消息,而pub/sub模式下所有訂閱者都會得到所有的消息。