當前位置:
首頁 > 科技 > ActiveMQ消息傳遞的兩種方式

ActiveMQ消息傳遞的兩種方式

1.什麼是ActiveMQ?

ActiveMQ是apache提供的開源的,實現消息傳遞的一個中間插件,可以和spring整合,是目前最流行的開源消息匯流排,ActiveMQ是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實現。較相似的還有rabbitMQ和kafka等,都是最為消息傳遞的插件


2.ActiveMQ傳遞消息的兩種方式

前提:需要引入activemq的jar包

點對點方式(PTP):一個消費者對應一個生產者

發布/訂閱模式(Publish/Sub):一個生產者產生消息發送後,可以被多個消費者進行接收。

JMS定義了五種消息正文格式,以及消息的調用類型,允許發送和接收一些不同類型的數據,提供現有消息格式的一些級別的兼容性。

StreamMessage:--JAVA原始的數據流

TextMessage:一個字元串對象

ObjectMessage:一個系列化的java對象

BytesMessage:一個位元組對象

MapMessage:key/value方式的鍵值對


(1)點對點的方式(PTP)

即:一個消息的生產者對應一個消費者

生產者(Producer)實現步驟:

第一步:創建一個ConnectionFactory對象,將服務端activemq的 ip 和 port 作為構造參數傳遞

第二步:通過第一步創建的工廠對象獲得連接對象Connection

第三步:開啟連接,直接調用connection對象的start方法即可

第四步:創建一個Session對象,通過connection對象創建

第五步:通過Session對象創建一個Destination對象(該對象有兩種方式:topic和quene),這裡使用quene

第六步:通過Session對象創建一個生產者Producer對象

第七步:創建Message對象,這裡使用TextMessage對象,設置消息內容

第八步:使用創建的生產者對象Producer發送消息

第九步:關閉資源(Producer對象,Connection對象,Session對象)

消費者實現:

第一步:創建一個ConnectionFactory對象,將服務端activemq的 ip 和 port 作為構造參數傳遞

第二步:通過第一步創建的工廠對象獲得連接對象Connection

第三步:開啟連接,直接調用connection對象的start方法即可

第四步:創建一個Session對象,通過connection對象創建

第五步:創建一個Destination對象,使用quene,需要和生產者的quene一致

第六步:創建一個消費者對象

第七步:接收消息

第八步:列印接收的消息

第九步:關閉資源

消費者的代碼:

(2)訂閱發布方式傳遞消息:Topic

生產者實現步驟:

步驟和PTP的方式完全一樣,不同的是在創建Destination對象的時候,需要創建topic對象

直接上代碼:

消費者實現的步驟:

步驟和PTP消費者實現的步驟一樣,唯一不同的是在創建Destination對象的時候,創建topic對象,同時要和發布訂閱的生產者的topic一致

消費者代碼:


總結:兩種傳遞消息的方式的異同

相同點:實現步驟基本一樣,大同小異

不同點:PTP傳遞消息的方法,消息的生產者發送以後,消息會持久化在activemq的服務端,如果該消息給消費者消費,在服務端持久化的消息也就同時被刪除。

發布訂閱傳遞消息的方法:消息的生產者發送消息以後,如果沒有消費者消費,消息不會持久化在activemq的客戶端,會立即消失。如果創建的消息被消費,會的activemq的服務端顯示消息相關內容。這一點和PTP剛好相反。

注意:發布訂閱傳遞消息的方式:也是可以實現消息持久化在服務端的,需要消費者首先在activemq的服務端訂閱消息(註冊),將消費者客戶端的ID(作為唯一標識,因為可以有多個消費者)和消息的ID傳遞給服務端即可。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 深秀Deepshow 的精彩文章:

約瑟夫環的四種實現方式
Android四種引用類型你了解多少?——強烈建議加入收藏夾

TAG:深秀Deepshow |