JMS組成元素

JMS提供者:

連接面向消息中間件的,JMS接口的一個實現。提供者可以是Java平臺的JMS實現,也可以是非Java平臺的面向消息中間件的適配器。


JMS客戶:

生產或消費消息的基於Java的應用程序或對象。


JMS生產者:

創建併發送消息的JMS客戶。


JMS消費者:

接收消息的JMS客戶。


JMS消息:

包括可以在JMS客戶之間傳遞的數據的對象


JMS隊列:

一個容納那些被髮送的等待閱讀的消息的區域。隊列暗示,這些消息將按照順序發送。一旦一個消息被閱讀,該消息將被從隊列中移走。


JMS主題:

一種支持發送消息給多個訂閱者的機制。


JMS模型:

點對點或隊列模型:

一個生產者向特定的隊列發佈消息,一個消費者從該隊列中讀取消息。這種模式被概括爲:只有一個消費者將獲得消息,生產者不需要在接收者消費該消息期間處於運行狀態,

接收者也同樣不需要在消息發送時一直處於運行狀態。每一個成功處理的消息都由接收者簽收。


發佈者/訂閱者模型:

支持向一個特定的消息主題發佈消息。0或多個訂閱者可能對接收來自特定消息主題的消息感興趣。在這種模式下,發佈者和訂閱者彼此不知道對方。這種模式被概括爲:多個

消費者可以獲得消息.在發佈者和訂閱者之間存在時間依賴性。發佈者需要建立一個訂閱(subscription),以便客戶能夠購訂閱。訂閱者必須保持持續的活動狀態以接收消息,

除非訂閱者建立了持久的訂閱。在那種情況下,在訂閱者未連接時發佈的消息將在訂閱者重新連接時重新發布。


JMS現在有兩種傳遞消息的方式:

標記爲NON_PERSISTENT的消息最多投遞一次。

標記爲PERSISTENT的消息將使用暫存後再轉送的機理投遞。如果一個JMS服務離線,那麼持久性消息不會丟失但是得等到這個服務恢復聯機時纔會被傳遞。

默認的消息傳遞方式是非持久的,可以降低內存和減少寄存器的使用。這種傳遞方式只有當你不需要接收所有的消息才使用。


雖然JMS規範並不需要JMS供應商實現消息的優先級路線,但是它需要遞送加快的消息優先於普通級別的消息。

JMS定義了從09的優先級路線級別,0是最低的優先級而9則是最高的。更特殊的是04是正常優先級的變化幅度,而59是加快的優先級的變化幅度。舉例來說:

topicPublisher.publish (message, DeliveryMode.PERSISTENT, 8, 10000);//Pub-Sub 或 

queueSender.send(message,DeliveryMode.PERSISTENT, 8, 10000);//P2P 

這個代碼片斷,有兩種消息模型,映射遞送方式是持久的,優先級爲加快型,生存週期是10000 (以毫秒度量 )

如果生存週期設置爲零,這則消息將永遠不會過期。當消息需要時間限制否則將使其無效時,設置生存週期是有用的。


JMS定義了五種不同的消息正文格式,以及調用的消息類型,允許你發送並接收一些不同形式的數據,提供現有消息格式的一些級別的兼容性。

· StreamMessage -- Java原始值的數據流

· MapMessage--一套名稱-值對

· TextMessage--一個字符串對象

· ObjectMessage--一個序列化的 Java對象

· BytesMessage--一個未解釋字節的數據流









發佈了43 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章