JMS入門(二)Chat示例簡要說明


簡要說明一下昨天示例中的要素:

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://localhost:61616
java.naming.security.principal=system
java.naming.security.credentials=manager
connectionFactory= TopicCF
topic.topic1 = jms.topic1
上面的配置提供了JMS提供者的JNDI信息
前兩行分別爲消息服務器的上下文工廠類和URL,用於連接到服務器。
接下來爲提供者的用戶名和憑證
最重要的是最後兩行,分別爲爲應用程序設置的 TopicConnectionFactory 和 Topic,即受管對象

示例中建立連接的步驟:

1 獲得JMS提供者的一個初始上下文
2 查找連接工廠
3 創建一個JMS 連接
4 創建一個JMS會話
5 查找目的地
6 啓動連接

名詞

我覺得Chat示例代碼中的註釋足夠多了,API需要了解,但沒什麼可講的,所以只記錄一下需要弄清楚的名詞:
JMS客戶端:消息傳送客戶端
JMS提供者(JMS Provider):消息傳送系統
消息生產者:生產消息的JMS客戶端
消息消費者:接收消息的JMS客戶端
JMS受管(JMS-administered)對象:發佈/訂閱主題和p2p隊列,因爲他們都是集中管理的,除這兩個Destination外,還有個 ConnectionFactory,這些都是通過JNDI獲得的,所謂的受管就是由系統管理員建立和配置的。
消息傳送系統的組成:消息傳送客戶端、消息傳送中間件

ActiveMQ

昨天的示例中,我們使用了ActiveMQ這個開源消息傳送產品。繼它之後還有一種新型消息傳送產品ESB,他們之間存在一種關係,即ESB產品可以採用消息傳送作爲通信協議,他們也支持HTTP傳送。
要注意一下JMS 只是一種廠商無關的Java API,它不是ActiveMQ,也不是客戶端。
企業消息傳送的一個關鍵就是異步:消息通過網絡從一個系統異步傳送給其他系統,這點與RPC是截然相反的。
這裏,異步消息應該是自描述的,以便接受者能獨立完成他們的工作。

企業消息傳送系統的幾種結構:

集中式體系結構
一個典型的例子就是一臺集中式消息服務器連接着多個客戶端,一個客戶端向消息服務器發送消息,其他客戶端(一個或多個)接收消息。
分散式體系結構
同集中式體系結構的最直觀區別就是沒有用於消息路由的服務器,因爲這種結構使用了組播,將消息的發佈交由網絡層來完成。
混合式體系結構
昨天的示例使用了一個服務器和多個客戶端,這就屬於集中式體系結構,這個消息服務器也可以是一個服務器集羣。


兩種消息傳送模型:

點對點和發佈/訂閱
點對點消息傳送模型和發佈/訂閱消息傳送模型重要區別是
P2p消息會被一直傳送,它不會考慮接收者當前的連接狀態。一旦某條消息被傳送給一個隊列,它就會保存在該隊列中,即使當前並沒有消費者連接,也是如此
發佈/訂閱模型是把消息複製給每個訂閱者時,使用消息選擇器;而點對點模型則是在已將消息添加到隊列之後,再使用消息選擇器
這兩種模型一定要弄清楚,Chat示例就屬p2p模型,下次我將準備一個點對點消息傳送模型的示例

點對點消息傳送模型的兩種類型 :

異步即發即棄處理和異步請求/應答處理


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章