Activemq是什么?ActiveMQ 是Apache出品,最流行的,能力強(qiáng)勁的開源消息總線。ActiveMQ 是一個(gè)完全支持JMS1.1和J2EE 1.4規(guī)范的 JMS Provider實(shí)現(xiàn),盡管JMS規(guī)范出臺已經(jīng)是很久的事情了,但是JMS在當(dāng)今的J2EE應(yīng)用中間仍然扮演著特殊的地位。
主要特點(diǎn):
ActiveMQ消息傳遞的兩種類型:
一種是點(diǎn)對點(diǎn)的,即一個(gè)生產(chǎn)者和一個(gè)消費(fèi)者一一對應(yīng);
另一種是發(fā)布/訂閱模式,即一個(gè)生產(chǎn)者產(chǎn)生消息并進(jìn)行發(fā)送后,可以由多個(gè)消費(fèi)者進(jìn)行接收。
JMS定義了五種不同的消息正文格式,以及調(diào)用的消息類型,允許你發(fā)送并接收以一些不同形式的數(shù)據(jù),提供現(xiàn)有消息格式的一些級別的兼容性。
點(diǎn)對點(diǎn):
發(fā)布/訂閱:
在點(diǎn)對點(diǎn)或隊(duì)列模型下,一個(gè)生產(chǎn)者向一個(gè)特定的隊(duì)列發(fā)布消息,一個(gè)消費(fèi)者從該隊(duì)列中讀取消息。這里,生產(chǎn)者知道消費(fèi)者的隊(duì)列,并直接將消息發(fā)送到消費(fèi)者的隊(duì)列。這種模式被概括為:只有一個(gè)消費(fèi)者將獲得消息。生產(chǎn)者不需要在接收者消費(fèi)該消息期間處于運(yùn)行狀態(tài),接收者也同樣不需要在消息發(fā)送時(shí)處于運(yùn)行狀態(tài)。每一個(gè)成功處理的消息都由接收者簽收。
發(fā)布者/訂閱者模型支持向一個(gè)特定的消息主題發(fā)布消息。0或多個(gè)訂閱者可能對接收來自特定消息主題的消息感興趣。在這種模型下,發(fā)布者和訂閱者彼此不知道對方。這種模式好比是匿名公告板。這種模式被概括為:多個(gè)消費(fèi)者可以獲得消息.在發(fā)布者和訂閱者之間存在時(shí)間依賴性。發(fā)布者需要建立一個(gè)訂閱(subscription),以便客戶能夠購訂閱。訂閱者必須保持持續(xù)的活動狀態(tài)以接收消息,除非訂閱者建立了持久的訂閱。在那種情況下,在訂閱者未連接時(shí)發(fā)布的消息將在訂閱者重新連接時(shí)重新發(fā)布。
使用其他的工程來學(xué)習(xí):
工程需要添加jar包:
生產(chǎn)者:生產(chǎn)消息,發(fā)送端。
第一步:創(chuàng)建ConnectionFactory對象,需要指定服務(wù)端ip及端口號。
第二步:使用ConnectionFactory對象創(chuàng)建一個(gè)Connection對象。
第三步:開啟連接,調(diào)用Connection對象的start方法。
第四步:使用Connection對象創(chuàng)建一個(gè)Session對象。
第五步:使用Session對象創(chuàng)建一個(gè)Destination對象(topic、queue),此處創(chuàng)建一個(gè)Queue對象。
第六步:使用Session對象創(chuàng)建一個(gè)Producer對象。
第七步:創(chuàng)建一個(gè)Message對象,創(chuàng)建一個(gè)TextMessage對象。
第八步:使用Producer對象發(fā)送消息。
第九步:關(guān)閉資源。
消費(fèi)者:接收消息。
第一步:創(chuàng)建一個(gè)ConnectionFactory對象。
第二步:從ConnectionFactory對象中獲得一個(gè)Connection對象。
第三步:開啟連接。調(diào)用Connection對象的start方法。
第四步:使用Connection對象創(chuàng)建一個(gè)Session對象。
第五步:使用Session對象創(chuàng)建一個(gè)Destination對象。和發(fā)送端保持一致queue,并且隊(duì)列的名稱一致。
第六步:使用Session對象創(chuàng)建一個(gè)Consumer對象。
第七步:接收消息。
第八步:打印消息。
第九步:關(guān)閉資源
文/云和數(shù)據(jù)JAVA技術(shù)專家