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
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的屬性名字。