ActiveMQ学习笔记(2)——JMS消息模型
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
1.1 JMS模型簡介
JMS支持兩種消息通信模型:
點對點模型(Point to Point,P2P)
發(fā)布者/訂閱者模型(publish/subscribe, ?pub/sub)
P2P模型中,Sender把一個消息發(fā)送到Queue中,這個消息只能由一個客戶端消費;一旦消息被消費,其它客戶端就不能從這個Queue中獲取到消息。巧克力糖盒子里只有一塊糖,只有最先打開的那個人能吃到,后來的人就吃不到了。
Pub/Sub模型中,一個消息主題(Topic)被發(fā)布以后,可以有多個訂閱者收聽,這些訂閱者都可以獲取到消息;前提是,訂閱者訂閱了這個主題,并且只能接受訂閱以后的消息。這就像生活里的期刊訂閱,我們只能收到訂閱以后的期刊,之前的期刊,雜志社是不可能投遞給我們的。
1.2點對點模型
只有一個消費者
? ? ?每條消息只有一個消費者,如果這條消息被消費,那么其它消費者不能接受到此消息。
? 時間無關(guān)性
? ? ? ?消息的消費和時間無關(guān),只要消息被發(fā)送了,在消息過期之前,如果沒有其他消費者消費了這個消息,那么客戶端可以在任何時候來消費這條消息。
消費者必須確認(rèn)
? ? ? ?消費者收到消息之后,必須向Message Provider確認(rèn),否則會被認(rèn)為消息沒有被消費,仍然可以被其他消費者消費。可以設(shè)置自動確認(rèn)。這個特點其實也是保證一條消息只能由一個消費者來消費。
非持久化的消息只發(fā)一次
非持久化的消息,可能會丟失,因為消息會過期,另外Message Provider可能宕機。
持久化的消息嚴(yán)格發(fā)一次
消息可以被持久化,比如持久化在文件系統(tǒng)或者數(shù)據(jù)庫中,這樣可以避免Message Provider的異常或者其它異常導(dǎo)致消息丟失。
????????
1.3發(fā)布者/訂閱者模型
每條消息可以有多個訂閱者
訂閱者只能消費它們訂閱topic之后的消息
非持久化訂閱,訂閱者必須保持為活動狀態(tài)才能使用這些消息,如果一個訂閱者A斷開了10分鐘,那么A就會收不到這10分鐘內(nèi)的消息。
持久化訂閱,Message Provider會保存這些消息,即使訂閱者因為網(wǎng)絡(luò)原因斷開了,再重新連接以后,能讓消費這些消息。
是否使用持久化訂閱,需要根據(jù)業(yè)務(wù)場景判斷。
轉(zhuǎn)載于:https://my.oschina.net/xiaoxishan/blog/378752
總結(jié)
以上是生活随笔為你收集整理的ActiveMQ学习笔记(2)——JMS消息模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JBoss配置详解
- 下一篇: 【svn】设置过滤文件