ActiveMQ學習筆記(2)——JMS消息模型

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會保存這些消息,即使訂閱者因爲網絡原因斷開了,再重新連接以後,能讓消費這些消息。

  • 是否使用持久化訂閱,需要根據業務場景判斷。

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