消息隊列ActiveMQ兩種模式

Apache ActiveMQ是Apache軟件基金會所研發的開放源代碼消息中間件;由於ActiveMQ是一個純Java程序,因此只需要操作系統支持Java虛擬機,ActiveMQ便可執行。 —百度百科

簡介

消息隊列是分佈式系統中重要的組件,通用使用場景爲當不需要立即獲得結果,但是併發量需控制時就需要使用消息隊列。消息列隊有兩種消息模式,一種是點對點的消息模式,另一種是訂閱\發佈的消息模式。

點對點模式

點對點的模式主要建立在一個隊列上,當連接一個列隊時,發送方不需要知道接收方是否正在接收消息,可以直接向ActiveMQ發送消息,而發送的消息將直接進入隊列中,如果接收方啓動着監聽,則會向接收方發送消息,若接收方沒有接收到消息,則會保存在ActiveMQ服務器中,直到接收方接收消息爲止。點對點的消息模式可以有多個接收方和發送方,但是一條消息只會被一個接收方接收到,先連上ActiveMQ接收方,則會先接收到消息,而之後的接收方則接收不到已被接收過的消息。
Queue支持存在多個消費者,但是對一個消息而言,只會有一個消費者可以消費。
在這裏插入圖片描述

發佈/訂閱模式

訂閱/發佈模式有多個接收方和發送方,但是接收方與發送方存在時間上的依賴,如果發送方發送消息時接收方沒有監聽消息,那麼ActiveMQ將不會保存該消息,認爲消息已經發送。這個模式還有一個特點就是發送方發送的消息會被所有的接收方接收到,與點對點模式恰恰相反。後面加入的接收方,無法收到之前發送的消息。
發佈訂閱模式下,當發佈者消息量很大時,顯然單個訂閱者的處理能力是不足的。
實際上現實場景中是多個訂閱者節點組成一個訂閱組負載均衡消費topic消息即分組訂閱,這樣訂閱者很容易實現消費能力線性擴展。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章