Java學(xué)習(xí)資料討論JMS與ActiveMQ的內(nèi)部邏輯

兩個系統(tǒng)之間或者分布式系統(tǒng)之間的信息通信,是我們開發(fā)中比較常見的場景,比如系統(tǒng)A要把信息發(fā)送給系統(tǒng)B,這個問題我們應(yīng)該如何去處理??
?
1999年,原來的SUN公司領(lǐng)銜提出了一種面向消息的中間件服務(wù)--JMS規(guī)范(標(biāo)準(zhǔn));
?
JMS即Java消息服務(wù)(Java Message Service的簡稱),是Java EE 的標(biāo)準(zhǔn)/規(guī)范之一。
?
這種規(guī)范(標(biāo)準(zhǔn))指出:消息的發(fā)送應(yīng)該是異步的、非阻塞的。
?
也就是說消息的發(fā)送者發(fā)送完消息后就直接返回了,不需要等待接收者接收到消息后才能返回,發(fā)送者和接收者可以說是互不影響。
?
所以這種規(guī)范(標(biāo)準(zhǔn))能夠減輕或消除系統(tǒng)瓶頸,實(shí)現(xiàn)系統(tǒng)之間去除耦合,提高系統(tǒng)的整體可伸縮性和靈活性。
?
JMS是Java EE中定義的一組標(biāo)準(zhǔn)API,它自身并不是一個消息服務(wù)系統(tǒng),它是消息傳送服務(wù)的一個抽象,也就是說它定義了消息傳送的接口而并沒有具體實(shí)現(xiàn)。
?
JMS規(guī)范經(jīng)歷了多年的發(fā)展,并隨著Java EE進(jìn)行了幾次升級,版本從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只是消息服務(wù)的一組規(guī)范和接口,并沒有具體的實(shí)現(xiàn),而ActiveMQ就是JMS規(guī)范的具體實(shí)現(xiàn);
?
ActiveMQ是Apache下的一個項(xiàng)目,采用Java語言開發(fā);
?
ActiveMQ 是一款非常流行的開源消息服務(wù)器,實(shí)現(xiàn)了JMS規(guī)范,官網(wǎng): http://activemq.apache.org/
?
ActiveMQ與JMS關(guān)系,我們知道,JMS只是定義了一組有關(guān)消息傳送的規(guī)范和標(biāo)準(zhǔn),并沒有真正實(shí)現(xiàn),也就說JMS只是定義了一組接口而已,就像JDBC抽象了關(guān)系數(shù)據(jù)庫訪問、JPA抽象了對象與關(guān)系數(shù)據(jù)庫映射、JNDI抽象了命名目錄服務(wù)訪問一樣,JMS具體的實(shí)現(xiàn)由不同的消息中間件廠商提供,比如Apache ActiveMQ就是JMS規(guī)范的具體實(shí)現(xiàn),Apache ActiveMQ才是一個消息服務(wù)系統(tǒng),而JMS不是。