JMS笔记(一)
1.jms概念
Java Message Service為 Java程序提供一種訪問企業消息系統的方法,JMS應用由JMS生產者、JMS Provider、JMS消費者構成
1.1. 一條Message 的組成
(1) 頭(head)
每條JMS 消息都必須具有消息頭。頭字段包含用于路由和識別消息的值。可以通過多種方式來設置消息頭的值:
a. 由JMS 提供者在生成或傳送消息的過程中自動設置
b. 由生產者客戶機通過在創建消息生產者時指定的設置進行設置
c. 由生產者客戶機逐一對各條消息進行設置
?
(2) 屬性(property)
消息可以包含稱作屬性的可選頭字段。他們是以屬性名和屬性值對的形式制定的。可以將屬性是為消息頭得擴展,其中可以包括如下信息:創建數據的進程、數據的創建時間以及每條數據的結構。JMS提供者也可以添加影響消息處理的屬性,如是否應壓縮消息或如何在消息生命周期結束時廢棄消息。
?
(3) 主體(body)
包含要發送給接收應用程序的內容。每個消息接口特定于它所支持的內容類型。JMS為不同類型的內容提供了他們各自的消息類型,但是所有消息都派生自Message接口。
StreamMessage ? 一種主體中包含Java基元值流的消息。其填充和讀取均按順序進行。
MapMessage ?? ?一種主體中包含一組鍵--值對的消息。沒有定義條目順序。
TextMessage ? ? ? 一種主體中包含Java字符串的消息(例如,XML消息)。
ObjectMessage ? ?一種主體中包含序列化Java對象的消息。
BytesMessage ? ? 一種主體中包含連續字節流的消息。
1.2. 消息傳遞模型
?JMS支持兩種消息傳遞模型:點對點(point-to-point,簡稱P2P)和發布/訂閱(publish/subscribe,簡稱pub/sub)?
P2P特點:
(1)每個消息只有一個消費者(Consumer)(即一旦被消費,消息就不再在消息隊列中)
(2)發送者和接收者之間在時間上沒有依賴性,也就是說當發送者發送了消息之后,不管接收者有沒有正在運行,它不會影響到消息被發送到隊列
(3)接收者在成功接收消息之后需向隊列應答成功
Pub/Sub的特點
(1)每個消息可以有多個消費者
(2)發布者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創建一個訂閱者之后,才能消費發布者的消息,而且為了消費消息,訂閱者必須保持運行的狀態。
(3)為了緩和這樣嚴格的時間相關性,JMS允許訂閱者創建一個可持久化的訂閱。這樣,即使訂閱者沒有被激活(運行),它也能接收到發布者的消息。
2. 安裝ActiveMQ
ibm的websphere mq提供了90天的試用版,雖然項目中使用的是websphere mq,但我沒有仔細研究過,本機玩玩還是選擇了ActiveMQ
去http://activemq.apache.org/activemq-5130-release.html?下載5.13.0,我用的windows系統,解壓進入主目錄bin下,運行activemq.bat就行了,如果控制臺出現java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0 這樣的錯誤,就是jdk版本的問題,官網提供的jar使用Build-Jdk: 1.7.0_80編譯,你的jdk低了,簡單的辦法安裝jdk1.7,設置主目錄環境變量
?
后面會介紹activemq的使用。。。
?
?
轉載于:https://www.cnblogs.com/yhzh/p/5099132.html
總結
- 上一篇: JavaScript(15)jQuery
- 下一篇: nginx负载均衡集群