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