Java消息系統介紹

Java消息系統介紹

在這篇文章中,我將會討論面向消息的中間件(Message Orientated Middleware) 以及如何經過JMS來實現。另外,我還將討論適用於使用JMS的典型用例,以及用於討論消息傳遞解決方案(如發佈者/發送方,目的地/主題/隊列, 訂閱者/接收者)的不一樣術語。我將介紹兩種消息拓撲:點對點和發佈訂閱。java

數據訪問層

在Java EE應用的典型架構中,數據訪問層有不少和數據存儲層通訊的技術,好比Java Persistence API(JPI), Java Connector Architecture(JCA),這些技術將應用程序鏈接到了企業信息系統(EIS)和Java消息服務系統(JMS)web

JMS用來作什麼?

JMS用於在分佈式系統中經過鬆耦合,異步,可伸縮性和安全的方式傳遞消息。應用程序經過以消息爲導向的中間件發送和接收消息。 異步。意味着消息的發送方和接收方不須要同時與消息隊列交互。所以,接收方能夠在消息發送後的某個時間接收消息。express

  • 鬆耦合。 接收方和發送方相互不可見。
  • 可伸縮。意味着系統的不一樣部分能夠以不一樣的速率增加,並響應應用的負載。例如,在一個站點上忽然出現了大量的活動致使經過中間件發送的消息極具增長,能夠進行自動擴展。這樣增長了系統的健壯性,不然很難應對這種忽然增大的負載,應用程序可能會出現問題,或者直接掛掉了。

何時使用JMS?

依賴與使用場景來使用JMS,可是一般,至少會有如下一種狀況。api

  1. 應用程序應該可以在不須要當即響應消息的狀況下發送消息。也許根本就不須要發送消息的響應或者就是單向通訊。
  2. 發送方不依賴接收方的接收,所以很容易替換接收方。歸結於須要將應用程序的部分解耦。 當接收方掛掉,應用程序應該可以繼續保持工做,這是健壯性方面的考慮。

術語

在討論JMS時,有一些有用的術語能夠幫助咱們傳達咱們的意圖。安全

  1. destination. destination是消息發送的位置,並被稱爲topic或queue。這一般在JMS中定義爲字符串值。應該給目的地提供表示其功能的名稱。
  2. JMS系統有publisher或sender。這是消息來源的地方,也是消息終止的訂閱者或接收者。這裏使用的術語依賴於消息傳遞系統的拓撲,它能夠是點到點,也能夠是發佈/訂閱。
  3. 消息有一個有效載荷(payload),它包含了接收者提取和處理的有用信息。消息類型能夠是文本、二進制、流、對象或屬性映射。

點到點的消息拓撲結構

輸入圖片說明 在點對點設置中,消息的來源被稱爲發送方,而目的地被稱爲隊列。這裏消息被髮送到一個目的地,只有一個消息的實例被接收方接收。若是接收方關閉,則消息將在隊列中保存,直到接收方從新啓動並再次運行。服務器

發佈訂閱消息拓撲結構 輸入圖片說明session

在發佈/訂閱設置中,消息的來源被稱爲發佈者,目標被稱爲主題。在這裏,許多訂閱者能夠訂閱一個主題,每一個訂閱者都接收到消息的一個實例。所以,一個消息被髮送給許多等待的訂閱者。若是訂閱服務器關閉,它將不會接收到消息,當它再次運行時。架構

更多參考

原文: https://dzone.com/articles/java-message-system-introduction?edition=327491&utm_source=Daily%20Digest&utm_medium=email&utm_campaign=Daily%20Digest%202017-09-22java-ee

相關文章
相關標籤/搜索