RabbitMQ學(xué)習(xí)

AMQP協(xié)議

AMQP(高級(jí)消息隊(duì)列協(xié)議)是一個(gè)能讓符合統(tǒng)一標(biāo)準(zhǔn)的客戶端和中間件進(jìn)行消息傳輸?shù)南f(xié)議。是RabbitMQ主要實(shí)現(xiàn)支持的協(xié)議的一種。

涉及到的相關(guān)概念的介紹
publisher:發(fā)送消息到broker的客戶端。
receiver:接受broker發(fā)來(lái)的消息的客戶端。

AMQP消息模型

Publisher發(fā)送到broker的消息,首先被發(fā)到了broker中的Exchanges,Exchanges根據(jù)被稱作bindings的規(guī)則,將消息的拷貝發(fā)送到對(duì)應(yīng)的queues中,然后broker會(huì)將queues中的消息發(fā)送到訂閱相應(yīng)queues的consumer。

Exchanges,bindings和queues被統(tǒng)稱為amqp的實(shí)體

Excange and Exchange Types

pulisher實(shí)際是發(fā)送消息到broker中的Exchanges,然后Exchanges將消息路由到對(duì)應(yīng)的queues。路由規(guī)則是由Exchange type和bindings來(lái)決定的。

Exchange Types

Name Default pre-declared names
Direct exchange (Empty string) and amq.direct
Fanout exchange amq.fanout
Topic exchange amq.topic
Headers exchange amq.match (and amq.headers in RabbitMQ)

在聲明Exchange時(shí),除了可以指定Exchange Type,還可以指定一些其它的屬性:

  • Name
  • Durability (定義Exchange是永久還是臨時(shí)的,臨時(shí)性的Exchange在broker重啟后就會(huì)消失)
  • Auto-delete (定義這個(gè)屬性后,當(dāng)沒(méi)有任何queue和此Exchange綁定時(shí),此Exchange會(huì)被自動(dòng)刪除)
  • Arguments (optional, used by plugins and broker-specific features)

Default Exchange

default exchange 是被broker預(yù)先聲明的name為空的direct exchange。
當(dāng)使用default exchange 時(shí),我們聲明一個(gè)名為"xxxxx"的queue,這個(gè)queue會(huì)以值為"xxxxx"的route-key綁定到default exchange。(即聲明的queue會(huì)自動(dòng)以queue name作為routing key綁定)

Direct Exchange

direct exchange根據(jù)消息的routing key將消息發(fā)送給相應(yīng)的queue。
direct exchange對(duì)用于將任務(wù)循環(huán)分配給多個(gè)worker的場(chǎng)景。消息會(huì)被負(fù)載均衡到多個(gè)consumer,不是負(fù)載均衡到多個(gè)queue。

自己理解的完整消息轉(zhuǎn)發(fā)流程

在exchange type 為direct的情況下,broker會(huì)把匹配上routing_key的消息完整的發(fā)送給每一個(gè)合適的queue里,然后queue會(huì)將消息均衡到綁定到器上的


Fanout Exchange

broker會(huì)把發(fā)送到fanout exchange的消息轉(zhuǎn)發(fā)給所有綁定到此exchange的queue,不會(huì)去匹配routing key。


Topic Exchange

Headers Exchange

headers exchange 通過(guò)消息頭部的屬性而不是routing_key進(jìn)行消息路由。


java客戶端代碼開發(fā)示例

主要接口和方法

Exchange 聲明

exchangeDeclare(String exchange, BuiltinExchangeType type,boolean durable, boolean autoDelete):聲明non-autodelete, non-durable

DIRECT

服務(wù)端安裝和配置

安裝(ubuntu14.04)

直接通過(guò)apt repository進(jìn)行安裝

    echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list
    wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
    sudo apt-get update
    sudo apt-get install rabbitmq-server

** 安裝相關(guān)問(wèn)題參考地址:http://http://www.rabbitmq.com/install-debian.html **

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容