ActiveMQ是一個非常流行的消息隊列服務中間件,基于JMS(Java Message Service)規范,并且它是一個純Java程序,運行環境只需要Java虛擬機。
JMS規范定義了2類消息發送接收模型:點對點queue,發布訂閱topic,區別是能夠重復消費和是否保存。
1,點對點queue:不可重復消費,消息被消費前一直保存。
生產者發送消息到queue,一個消費者取出并消費消息。
消息被消費后,queue中不再保存,所有只有一個消費者能夠取到消息。
queue支持多個消費者存在,但是一個消息只有一個消費者可以消費。
當前沒有消費者時,消息一直保存,直到被消費者消費。
2,發布訂閱topic:可重復消費,發布給所有訂閱者。
生產者發布消息到topic中,多個訂閱者收到并消費消息。
和queue不同,發布到topic中的消息會被所有訂閱者消費。
當生產者發布消息時,不管是否有訂閱者,都不保存消息。
JMS規范定義的2類消息傳輸模型queue和topic比較:
Queue | Topic | |
模型 | 點對點Point-to-Point | 發布訂閱publish/subscribe |
有無狀態 | queue消息在消費前被一直保存在mq服務器上的文件或者配置DB | topic數據默認不保存,是無狀態的。 |
完整性保障 | queue保證每條消息都被消費者接收到 | topic不保證生產者發布的每條消息都被訂閱者接收到 |
消息是否會丟失 | 生產者發送消息到queue,消費者接收到消息。如果沒有消費者,將一直保存,不會丟失。 | 生產者發布消息到topic時,當前的訂閱者都能夠接收到消息。如果當前沒有訂閱者,該消息就丟失。 |
消息發布接收策略 | 一對一的消息發布接收策略,一個生產者發送的消息只被一個消費者接收。mq服務器收到回復后,將這個消息刪除。 | 一對多的消息發布接收策略,同一個topic的多個訂閱者都能收到生產者發布的消息。 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。