這節(jié)開始動(dòng)手寫程序草添,首先寫一個(gè)簡單的P2P通信模式(點(diǎn)對(duì)點(diǎn))的消息隊(duì)列遗座。分為以下幾步
1. 引入pom依賴
作為一個(gè)簡單實(shí)例舀凛,先引入一個(gè)activemq-core
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
</dependency>
</dependencies>
2. 編寫消息生產(chǎn)者端(Producer)生產(chǎn)消息
對(duì)應(yīng)例子工程:activemqprovider1
類似于JDBC那幾步:
1)創(chuàng)建連接工廠(ConnectionFactory)
2)通過連接工廠創(chuàng)建(到消息隊(duì)列服務(wù)器的)連接(Connection)
3)啟動(dòng)連接(start connection)
4)通過連接創(chuàng)建一個(gè)會(huì)話(Session)
5)通過會(huì)話創(chuàng)建一個(gè)目的地(消息隊(duì)列)
6)通過會(huì)話創(chuàng)建一個(gè)消息生產(chǎn)者(MessageProducer)
7) 通過會(huì)話創(chuàng)建一到多條消息(Message),通過消息生產(chǎn)者發(fā)送出去
8)關(guān)閉會(huì)話和連接(close session,close connection),同JDBC類似员萍,用完釋放資源
通過管理控制臺(tái)來觀察
消息生產(chǎn)端未啟動(dòng)前腾降,一個(gè)queue(隊(duì)列)都沒有
生產(chǎn)端啟動(dòng)后,創(chuàng)建了一個(gè)消息隊(duì)列碎绎,并存在一個(gè)待消費(fèi)消息(入隊(duì)數(shù)量為1,出隊(duì)為0)
3. 編寫消息消費(fèi)者端(Consumer)消費(fèi)消息?
有生產(chǎn)就得有消費(fèi)抗果,消息才有意義筋帖,下面我們編寫消息消費(fèi)者端
對(duì)應(yīng)例子工程:activemqconsumer1
大部分過程同生產(chǎn)者端一樣
1)創(chuàng)建連接工廠
2)通過連接工廠創(chuàng)建(到消息隊(duì)列服務(wù)器的)連接
3)啟動(dòng)連接
4)通過連接創(chuàng)建一個(gè)會(huì)話(Session)
5)通過會(huì)話創(chuàng)建一個(gè)目的地(消息隊(duì)列)
6)通過會(huì)話創(chuàng)建一個(gè)消息消費(fèi)者(MessageConsumer)
7) 通過會(huì)話創(chuàng)建一到多條消息,通過消息生產(chǎn)者發(fā)送出去
8)關(guān)閉會(huì)話和連接
再次觀察控制臺(tái)
啟動(dòng)消費(fèi)者端消費(fèi)消息后冤馏,待消費(fèi)消息數(shù)量變?yōu)?日麸,出隊(duì)消息增加為1(表示已消費(fèi))
再次啟動(dòng)消費(fèi)者端,發(fā)現(xiàn)進(jìn)程一直阻塞,因?yàn)闆]有新消息可以消費(fèi)
在消息中傳遞額外屬性
生產(chǎn)消息時(shí)除了包裝消息內(nèi)容外代箭,也可以設(shè)置一些其他屬性表示對(duì)消息的額外說明墩划。
生產(chǎn)方通過消息對(duì)象的setXXXProperty方法設(shè)置屬性,XXX表示不同的數(shù)據(jù)類型
消費(fèi)方通過消息對(duì)象的getXXXProperty方法獲取屬性
請(qǐng)大家自行實(shí)驗(yàn)并觀察控制臺(tái)