深入掌握JMS(一):JSM基礎

1.JMS基本概念

JMS(Java Message Service) 即Java消息服務。它提供標準的產生、發送、接收消息的接口簡化企業應用的開發。它支持兩種消息通信模型:點到點(point-to-point)(P2P)模型和發佈/訂閱(Pub/Sub)模型。

P2P模型規定了一個消息只能有一個接收者;Pub/Sub模型允許一個消息可以有多個接收者。
對於點到點模型,消息生產者產生一個消息後,把這個消息發送到一個Queue(隊列)中,然後消息接收者再從這個Queue中讀取,一旦這個消息被一個接收者讀取之後,它就在這個Queue中消失了,所以一個消息只能被一個接收者消費。
與點到點模型不同,發佈/訂閱模型中,消息生產者產生一個消息後,把這個消息發送到一個Topic中,這個Topic可以同時有多個接收者在監聽,當一個消息到達這個Topic之後,所有消息接收者都會收到這個消息。
簡單的講,點到點模型和發佈/訂閱模型的區別就是前者是一對一,後者是一對多。

2.幾個重要概念

Destination:消息發送的目的地,也就是前面說的Queue和Topic。創建好一個消息之後,只需要把這個消息發送到目的地,消息的發送者就可以繼續做自己的事情,而不用等待消息被處理完成。至於這個消息什麼時候,會被哪個消費者消費,完全取決於消息的接受者。
Message:從字面上就可以看出是被髮送的消息。它有下面幾種類型:
StreamMessage:Java數據流消息,用標準流操作來順序的填充和讀取。
MapMessage:一個Map類型的消息;名稱爲string類型,而值爲Java的基本類型。
TextMessage:普通字符串消息,包含一個String。
ObjectMessage:對象消息,包含一個可序列化的Java對象
BytesMessage:二進制數組消息,包含一個byte[]。
XMLMessage:一個XML類型的消息。

 

最常用的是TextMessage和ObjectMessage。

Session:與JMS提供者所建立的會話,通過Session我們纔可以創建一個Message。
Connection:與JMS提供者建立的一個連接。可以從這個連接創建一個會話,即Session。
ConnectionFactory:那如何創建一個Connection呢?這就需要下面講到的ConnectionFactory了。通過這個工廠類就可以得到一個與JMS提供者的連接,即Conection。
MessageProducer:消息的生產者,要發送一個消息,必須通過這個生產者來發送。
MessageConsumer:與生產者相對應,這是消息的消費者或接收者,通過它來接收一個消息。

前面多次提到JMS提供者,因爲JMS給我們提供的只是一系列接口,當我們使用一個JMS的時候,還是需要一個第三方的提供者,它的作用就是真正管理這些Connection,Session,Topic和Queue等。

 

通過下面這個簡圖可以看出上面這些概念的關係。


ConnectionFactory---->Connection--->Session--->Message
Destination+Session------------------------------------>MessageProducer
Destination+Session------------------------------------>MessageConsumer

那麼可能有人會問:ConnectionFactory和Destination從哪兒得到?
這就和JMS提供者有關了.如果在一個JavaEE環境中,可以通過JNDI查找得到,如果在一個非JavaEE環境中,那隻能通過JMS提供者提供給我們的接口得到了.


轉載自:http://blog.csdn.net/iamfafa/article/details/6264359

我加入了一張圖片

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