AMQP是一種使用廣泛的獨(dú)立于語言的消息協(xié)議,它的全稱是Advanced Message Queuing Protocol,即高級消息隊(duì)列協(xié)議,它定義了一種二進(jìn)制格式的消息流,任何編程語言都可以實(shí)現(xiàn)該協(xié)議。實(shí)際上,Artemis也支持AMQP,但實(shí)際應(yīng)用最廣泛的AMQP服務(wù)器是使用Erlang編寫的RabbitMQ。
安裝RabbitMQ
我們先從RabbitMQ的官網(wǎng)下載并安裝RabbitMQ,安裝和啟動RabbitMQ請參考官方文檔。要驗(yàn)證啟動是否成功,可以訪問RabbitMQ的管理后臺http://localhost:15672,如能看到登錄界面表示RabbitMQ啟動成功:

RabbitMQ后臺管理的默認(rèn)用戶名和口令均為 guest,guest用戶只是被容許從localhost訪問 生產(chǎn)環(huán)境的記得修改新增后臺管理的賬戶跟密碼
RabbitMQ的基本消息類型
1、Hello Wold 簡單模式(普通消息)
生產(chǎn)者-消息隊(duì)列-消費(fèi)者
注意:當(dāng)程序出現(xiàn)異常時(shí),手動進(jìn)行ACK,
2、Work queues 工作隊(duì)列模式 ,在工人之間分配任務(wù)(競爭消費(fèi)者模式)
生產(chǎn)者-消息隊(duì)列-多個(gè)消費(fèi)者
注意:默認(rèn)開啟的是輪詢模式,設(shè)置每個(gè)消費(fèi)者同時(shí)只能處理一條消息,這樣子就快勞多得

消息隊(duì)列ACK

3、Publish/Subscribe發(fā)布訂閱模式,一次向多個(gè)消費(fèi)者發(fā)送消息
交換機(jī):RabbitMQ 消息傳遞模型的核心思想是生產(chǎn)者從不直接向隊(duì)列發(fā)送任何消息。實(shí)際上,生產(chǎn)者經(jīng)常甚至根本不知道消息是否會被傳送到任何隊(duì)列。相反,生產(chǎn)者只能將消息發(fā)送到交換機(jī)。交換是一件非常簡單的事情。一方面它接收來自生產(chǎn)者的消息,另一方面將它們推送到隊(duì)列中。交換機(jī)必須確切地知道如何處理它收到的消息。它應(yīng)該附加到特定隊(duì)列嗎?它應(yīng)該附加到許多隊(duì)列中嗎?或者它應(yīng)該被丟棄。其規(guī)則由交換類型定義。

有幾種可用的交換機(jī)類型:direct、topic、headers 和fanout。
4、Routing 路由模式

5、Topics 主題模式
6、Publisher Confirms 發(fā)布確認(rèn)模式
注意:交換機(jī)通道持久化,隊(duì)列持久化,消息持久化 保證異常情況下消息還能保存