在這篇文章中,我將會討論面向消息的中間件(Message Orientated Middleware) 以及如何經過JMS來實現。另外,我還將討論適用於使用JMS的典型用例,以及用於討論消息傳遞解決方案(如發佈者/發送方,目的地/主題/隊列, 訂閱者/接收者)的不一樣術語。我將介紹兩種消息拓撲:點對點和發佈訂閱。java
在Java EE應用的典型架構中,數據訪問層有不少和數據存儲層通訊的技術,好比Java Persistence API(JPI), Java Connector Architecture(JCA),這些技術將應用程序鏈接到了企業信息系統(EIS)和Java消息服務系統(JMS)web
JMS用於在分佈式系統中經過鬆耦合,異步,可伸縮性和安全的方式傳遞消息。應用程序經過以消息爲導向的中間件發送和接收消息。 異步。意味着消息的發送方和接收方不須要同時與消息隊列交互。所以,接收方能夠在消息發送後的某個時間接收消息。express
依賴與使用場景來使用JMS,可是一般,至少會有如下一種狀況。api
在討論JMS時,有一些有用的術語能夠幫助咱們傳達咱們的意圖。安全
在點對點設置中,消息的來源被稱爲發送方,而目的地被稱爲隊列。這裏消息被髮送到一個目的地,只有一個消息的實例被接收方接收。若是接收方關閉,則消息將在隊列中保存,直到接收方從新啓動並再次運行。服務器
發佈訂閱消息拓撲結構 session
在發佈/訂閱設置中,消息的來源被稱爲發佈者,目標被稱爲主題。在這裏,許多訂閱者能夠訂閱一個主題,每一個訂閱者都接收到消息的一個實例。所以,一個消息被髮送給許多等待的訂閱者。若是訂閱服務器關閉,它將不會接收到消息,當它再次運行時。架構