JMS (java massage Service)是一套消息標準,能在 JSR343 找到。它運行在java平臺上建立、發送、接受和閱讀郵件。經過可靠的異步來通訊實現程序的鬆耦合,以及實現分佈式通訊。官方解釋有點繞,可是理解原理和實現方式很是降單。JMS是一種消息中間件的實現。
java
在計算機發展過程當中,操做系統的發展是典型利用了分層、分模塊設計的軟件。系統的通訊協議、文件系統、驅動等內核提供的默認服務,一個模塊、一個模塊的多個層次給咱們提供服務。查看操做系統的任務管理器、能夠看見除了在屏幕上運行的軟件(默認你們經過屏幕操做),還有不少其它說不上名字的進程。這些進程或者說是服務,就是爲了給操做系統提供強大服務的主力,若是每個軟件把這些服務內置,那將是一個災難。從這咱們能當作軟件,或者說是一個大型的完整的系統是把相同的服務經過分層一個一個獨立出來。從而完成了低耦合、健壯、易擴展的軟件工程。
api
保證不一樣服務之間的數據交互,是分佈系統的核心,或者說是一個基礎。從系統層來講,能夠經過網絡協議通訊。其中最出名的是tcp/ip,http協議。應用層來講也許要自定義的一些協議,從而生成更加通用的api。JMS就是這樣一個消息協議。
服務器
JMS是一個消息中間的API,經過程序和消息服務的服務器的通訊,能夠將工程的鏈式結構分解成多個服務。JMS經過生產者、消費模式來實現通訊,也就是說工程和消息服務器鏈接都是tcp/ip的長鏈接,JMS模型分爲:點對點模型(p2p:一對一)和發佈/訂閱模型(Pub/Sub:一對多)。網絡
例如:登陸設計的時候,除了在users表中插入帳戶信息,咱們可能還須要給其它表來插入數據完善用戶信息。若是每個用戶都這樣完成註冊,當用戶量大的時候,用戶體驗就會很很差。這個時候,若是咱們之保留users信息插入,將其它的步驟經過JMS延後執行,就能解決訪問高時的延遲感。
異步
沿着這個思路,能夠將不一樣的步驟整合成服務,在不一樣的平臺,不一樣的環境中運行。只要能經過TCP/ip,利用JMS的消息模型來傳遞重要信息,就完成了一個分佈式系統。
tcp
a)JMS的兩種模型:
分佈式
b)使用:
spa
使用前:
操作系統
使用後:
設計