ActiveMQ學習筆記(一)--認識消息JMS

1、面向消息的中間件

    1.1 什麼是MOM

     面向消息的中間件,Message Oriented Middleware,簡稱MOM,利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通信來進行分佈式系統的集成。一個MOM系統,通常會包括客戶端(Client)、消息(Message)和MOM,客戶端是發送或者接收消息的應用程序,消息封裝了要傳遞的內容,MOM可以存儲和轉發消息。

    1.2 MOM的好處

  • 降低系統間的通信複雜度。有了MOM,系統間通信可以跨編程語言、不用考慮複雜的網絡編程,只需要關心自身和MOM之間如何進行消息的收發即可。而消息的收發通過簡單的API就可以完成

  • 提高消息的靈活性。系統A通過MOM向系統B發送消息,消息可以存儲在MOM中,並由MOM轉發。即使是系統B不在線,MOM會持有這個消息,直到系統B連接並處理消息。這就是說,系統A發完消息後,就可以執行其它操作,而不必阻塞等待,尤其是對那些時間無關或者並行處理的操作,非常適用。

  • 鬆散耦合。有了MOM的存在,對於系統B而言,只要發送的消息沒有變化,就不必考慮系統A的變化。A系統的代碼改變,不會影響到B系統,反之亦然。

2、JMS概念

    2.1 JMS是什麼

     Java消息服務(Java Message Service,JMS)應用程序接口是一個Java平臺中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通信。Java消息服務是一個與具體平臺無關的API,絕大多數MOM提供商都對JM提供支持。

     JMS的規範包括兩種消息模式,點對點和發佈/訂閱模式。

     JMS支持同步和異步的消息處理。

     JMS通常包括了以下部分:

      JMS Client:Java語言編寫的客戶端,用於收發消息

      Non-JMS Client:使用消息系統本地API編寫的客戶端

      Message:消息,用於在不同的客戶端之間交換

      JMS Provider:JMS提供商,是消息系統(如ActiveMQ),當然既可以支持JMS,也同時支持Non-JMS。

      Administered Objects:給管理的對象,預置的JMS對象,被客戶端使用

    2.2 JMS規範

     JMS規範只是定義了接口,並沒有實現。詳情見JMS API

3、JMS模型簡介

    JMS支持兩種消息模型:點對點模型(Point to Point,P2P)和發佈/訂閱模型(Publish/subscribe,pub/sub)

    3.1 點對點模型

  • 只有一個消費者。每條消息只有一個消費者,如果這小消息被消費,那麼其他消息消費者不能接受此消息

  • 時間無關性。消息的消費和時間無關,只要消息被髮送了,在消息過期之前,如果沒有其他消費者消費了這個消息,那麼客戶端可以在任何時候來消費這個消息

  • 消費者必須確認。消費者收到消息後必須向Message Provide確認,否則會被認爲沒有接收到此消息,仍然可以被其他消費者消費,可以設置自動確認。

  • 非持久化的消息只發一次。非持久化的消息,可能會丟失,因爲消息會過期,另外Message Provider可能會宕機。

  • 持久化消息嚴格發一次。消息可以被持久化,比如持久化在文件系統或者數據庫中。

    3.2 發佈/訂閱模式

  • 每條消息可以有多個訂閱者

  • 訂閱者只能消費他們訂閱topic之後的消息

  • 非持久化訂閱,訂閱者必須保持爲活動狀態才能使用這些消息,如果一個訂閱者斷開了一段時間,那麼該訂閱者就不能接收這段時間內的消息。

  • 持久化訂閱,Message Provider會保存這些消息,即使訂閱者因爲網絡原因斷開了,再重新連接以後,能讓消費者消費這些消息

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