一、JMS是什麼
java消息服務(java message service即JMS)應用程序接口是一個java平臺中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通信。java消息服務是一個與具體平臺無關的API。
對應的API接口就在javax.jms包下面:
二、JMS的對象模型
ConnectionFactory | 連接工廠 |
Connection | 連接 |
Session | 會話 |
Destination | 目的 |
MessageProducer | 生產者 |
MessageConsumer | 消費者 |
Message | 消息 |
Broker | 消息中間件的實例 |
也就是說,當我們去實現JMS規範的具體實現時,需要考慮上述因素,去將這些模型都有對應的實現。
三、JMS 的消息模型
- Point-to-Point(P2P)/點對點:也就是一條消息發送給一個消費者去消費,點對點模式一般是和Queue使用,也就是消息發送到Queue中,消費者從Queue中消費消息。
- Publish/Subscribe(Pub/Sub)/主題(發佈訂閱):發佈訂閱模式一般適合Topic關聯,一個生產向topic中發送消息,只要訂閱了這個topic的消息者,都可以接收到這條數據。
四、JMS的消息結構
jms的消息結構只要包括三個方面:消息頭、消息屬性、消息體。
- 消息頭:關於一些消息的描述信息
JMSDestination |
消息的目的地,Topic或者Queue |
JMSDeliveryMode |
消息的發送模式 |
JMSTimestamp |
消息傳遞給Broker的時間戳,它不是實際發送的時間 |
JMSExpiration |
消息的有效期,在有效期內,消息消費者纔可以消費這個消息 |
JMSPriority |
消息的優先級。0-4爲正常的優先級,5-9爲高優先級 |
JMSMessageID |
一個字符串用來唯一標示一個消息 |
JMSReplyTo |
有時消息生產者希望消費者回復一個消息,JMSReplyTo爲一個Destination,表示需要回復的目的地 |
JMSCorrelationID |
通常用來關聯多個Message |
JMSType |
表示消息體的結構,和JMS提供者有關 |
JMSRedelivered |
如果這個值爲true,表示消息是被重新發送了 |
- 消息屬性:可以理解爲消息的附加信息頭,屬性名可以自定義。
- 消息體類型 :發送消息的消息格式,有一下5中類型
BytesMessage |
用來傳遞字節消息 |
MapMessage |
用來傳遞鍵值對消息 |
ObjectMessage |
用來傳遞序列化對象 |
StreamMessage |
用來傳遞文件等 |
TextMessage |
用來傳遞字符串 |