1. 程式人生 > >ActiveMQ訊息佇列的使用及應用(二丶JMS基本概念和模型)

ActiveMQ訊息佇列的使用及應用(二丶JMS基本概念和模型)

一丶JMS基本概念(1)

概念

JMS Java Message Service,Java訊息服務,是Java EE中的一個技術

JMS規範

JMS 定義了Java中訪問訊息中介軟體的介面,並沒有給予實現,實現JMS介面的訊息中介軟體叫JMS Provider,例如ActiveMQ

JMS Provider

實現JMS介面和規範的的訊息中介軟體

JMS Message

JMS訊息,由以下三部分組成:

1.訊息頭:每個訊息頭欄位都有相應的的getter和setter方法

2.訊息屬性:如果需要消除訊息頭欄位以外的值,可以使用訊息屬性

3.訊息體:封裝具體的訊息資料

JMS Producer

訊息生產者,建立和傳送JMS訊息的客戶端應用

JMS Costumer

 

訊息消費者,接受和處理JMS訊息的客戶端應用

    訊息者可以使用以下兩種消費方式之一:

       1:同步消費:通過呼叫消費者的recive的方法從目的地中顯式提取訊息,recive方法可以一直阻塞到訊息的送達

  2:非同步消費:客戶可以作為消費者註冊一個訊息監聽器,以定義訊息到達時所採取的操作。

 

二丶JMS基本概念(2)

JMS Domains

訊息傳遞域,JMS中規定了兩種訊息傳遞域,點對點(point-to-point,簡寫PTP

),和釋出/訂閱傳遞域(publish/subscribe,簡寫成pub/sub)

    1.點對點訊息傳遞域的特點

   (1)每個訊息只能有一個消費者

        (2)訊息的生產者和消費者之間沒有時間上的相關性,無論消費者在生產者釋出訊息的的時候是否處於執行狀態,他都可以提取訊息。

           

    2.釋出/訂閱傳遞域的特點

        (1)每個訊息可以有多個消費者

        (2)生產者和消費者之間有時間上的相關性,訂閱一個主題的消費者(topic),只能消費自它訂閱之後釋出的訊息,JMS規範允許客戶建立持久訂閱

         這在一定程度上放寬了時間上的相關性要求,持久訂閱允許消費者消費他處於未啟用狀態是傳送的訊息。

    3.在點對點訊息傳遞域中,目的地被稱為佇列(queue),在釋出/訂閱訊息傳遞域中,目的地被稱為主題(topic)+

         

 

五丶JMS訊息結構(1)

 

JMS訊息由以下幾部分組成

 

訊息頭,屬性,訊息體

   1.訊息頭包含訊息的識別資訊和路由資訊,有以下一些標準屬性

         1:JMSDestination:訊息傳送的目的地,主要是指queen或topic。自動分配。

         2:JMSDeliveryMode:傳送模式,兩種 持久模式非持久模式(持久模式:JMS提供者出現故障,再次連線會再次傳遞,非持久模式相反)

       

     

六丶JMS訊息結構(2)

JMS API 定義了5種訊息格式,也叫訊息型別

   TextMessage,MapMessage,BytesMessage,StreamMessage和ObjectMessage

JMS 訊息屬性

   (1)應用程式設定和新增的屬性:

          比如 message.setStringProperty(“‘username’,username)

 

   (2)JMS定義的屬性

 

          使用JMSX作為屬性名的字首,

    connection.getMetaData().getJMSXPropertyNames()方法返回所有支援的JMS的屬性名字。