Java學習資料討論JMS與ActiveMQ的內部邏輯
兩個系統之間或者分散式系統之間的資訊通訊,是我們開發中比較常見的場景,比如系統A要把資訊傳送給系統B,這個問題我們應該如何去處理?
1999年,原來的SUN公司領銜提出了一種面向訊息的中介軟體服務--JMS規範(標準);
JMS即Java訊息服務(Java Message Service的簡稱),是Java EE 的標準/規範之一。
這種規範(標準)指出:訊息的傳送應該是非同步的、非阻塞的。
也就是說訊息的傳送者傳送完訊息後就直接返回了,不需要等待接收者接收到訊息後才能返回,傳送者和接收者可以說是互不影響。
所以這種規範(標準)能夠減輕或消除系統瓶頸,實現系統之間去除耦合,提高系統的整體可伸縮性和靈活性。
JMS是Java EE中定義的一組標準API,它自身並不是一個訊息服務系統,它是訊息傳送服務的一個抽象,也就是說它定義了訊息傳送的介面而並沒有具體實現。
JMS規範經歷了多年的發展,並隨著Java EE進行了幾次升級,版本從1.0到最新的2.1,它們分別是:
Java EE 8 --> Java Message Service API 2.1
Java EE 7 --> Java Message Service API 2.0
Java EE 6 --> Java Message Service API 1.1
Java EE 5 --> Java Message Service API 1.1
J2EE1.4 --> Java Message Service API 1.1
我們知道JMS只是訊息服務的一組規範和介面,並沒有具體的實現,而ActiveMQ就是JMS規範的具體實現;
ActiveMQ是Apache下的一個專案,採用Java語言開發;
ActiveMQ 是一款非常流行的開源訊息伺服器,實現了JMS規範,官網: http://activemq.apache.org/
ActiveMQ與JMS關係,我們知道,JMS只是定義了一組有關訊息傳送的規範和標準,並沒有真正實現,也就說JMS只是定義了一組介面而已,就像JDBC抽象了關係資料庫訪問、JPA抽象了物件與關係資料庫對映、JNDI抽象了命名目錄服務訪問一樣,JMS具體的實現由不同的訊息中介軟體廠商提供,比如Apache ActiveMQ就是JMS規範的具體實現,Apache ActiveMQ才是一個訊息服務系統,而JMS不是。