1、RabbitMQ 入門秘籍,三分鐘帶你快速了解RabbitMQ

一、前言

剛開始接觸RabbitMQ的時候,有些概念那理解起來簡直是像風(fēng)像雨又像霧,晦澀難懂。 這篇文章用盡可能淺顯的語言來解釋RabbitMQ的入門知識。畢竟是入門課程,并沒有對很多概念進行深入說明,如果你想更深入的了解RabbitMQ,可以繼續(xù)關(guān)注本頭條號后續(xù)發(fā)布的文章或者自己從網(wǎng)上搜尋了資料,自己探索研究。

二、RabbitMQ是什么

官方定義:RabbitMQ是一種消息中間件,用于處理來自客戶端的異步消息。服務(wù)端將要發(fā)送的消息放入到隊列池中。接收端可以根據(jù)RabbitMQ配置的轉(zhuǎn)發(fā)機制接收服務(wù)端發(fā)來的消息。RabbitMQ依據(jù)指定的轉(zhuǎn)發(fā)規(guī)則進行消息的轉(zhuǎn)發(fā)、緩沖和持久化操作,主要用在多服務(wù)器間或單服務(wù)器的子系統(tǒng)間進行通信,是分布式系統(tǒng)標準的配置。趣味定義:兔子行動非常迅速而且繁殖起來也非常瘋狂,用Rabbit來命名這個分布式軟件,呼應(yīng)了RabbitMQ的主要任務(wù)是處理海量的信息

三、安裝

1、安裝erlang

下載地址:http://erlang.org/download/otpwin6421.0.1.exe

2、安裝rabbitmq

下載地址:https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.7/rabbitmq-server-3.7.7.exe 如果你要安裝其它版本,注意版本對應(yīng):https://www.rabbitmq.com/which-erlang.html

3、開啟web訪問

Windows下:打開CMD 進入rabbitmq的安裝目錄 執(zhí)行rabbitmq-plugins enable rabbitmq_management命令 該命令,僅在首次運行RMQ時使用!!!目的就是加載Web插件!!!

4、訪問測試:http://localhost:15672/

默認用戶名:guest 默認密碼:guest

四、核心概念

https://content.pivotal.io/rabbitmq/understanding-when-to-use-rabbitmq-or-apache-kafka

RabbitMQ broker,原話是RabbitMQ isn’t a food truck, it’s a delivery service,其實說白了,就是一種傳輸服務(wù)。

Exchange: 接受生產(chǎn)者發(fā)送的消息,并根據(jù)Binding規(guī)則將消息路由給服務(wù)器中的隊列。ExchangeType決定了Exchange路由消息的行為。在RabbitMQ中,ExchangeType常用的有direct、Fanout和Topic三種,在第三部分會詳細介紹。

Message Queue: 消息隊列。我們發(fā)送給RabbitMQ的消息最后都會到達各種queue,并且存儲在其中(如果路由找不到相應(yīng)的queue則數(shù)據(jù)會丟失),等待消費者來取。

Binding Key:它表示的是Exchange與Message Queue是通過binding key進行聯(lián)系的,這個關(guān)系是固定的,初始化的時候,我們就會建立該隊列。

Routing Key:生產(chǎn)者在將消息發(fā)送給Exchange的時候,一般會指定一個routing key,來指定這個消息的路由規(guī)則。這個routing key需要與Exchange Type及binding key聯(lián)合使用才能生,我們的生產(chǎn)者只需要通過指定routing key來決定消息流向哪里。

我的注釋:初始化的時候,exchange與各個隊列的綁定關(guān)系是通過binding key進行綁定的;發(fā)送消息的時候,使用的routing key就是binding key的某一個(實質(zhì),兩者是一個含義,角度不同,名稱含義不同) 對于消費端來說,只用知道MQ的virtual host 和queue的名稱就可以了。而對于發(fā)送端,則需要知道exchange和routing key的名稱,相對而言queue的名稱就不那么重要了(不過也要依Exchange Type而定)。

以下是RabbitMQ最簡單的流程圖,相信看到這里的你,對MQ的運作流程應(yīng)該會有個基本的了解了:

五、三種ExchangeType

http://www.rabbitmq.com/tutorials/amqp-concepts.html 這里介紹三種最主要的類型的exchange:direct、fanout和topic。

1、direct交換器

Direct交換器很簡單,如果是Direct類型,就會將消息中的RoutingKey與該Exchange關(guān)聯(lián)的所有Binding中的BindingKey進行比較,如果相等,則發(fā)送到該Binding對應(yīng)的Queue中。有一個需要注意的地方:如果找不到指定的exchange,就會報錯。但routing key找不到的話,不會報錯,這條消息會直接丟失,所以此處要小心

2、fanout交換器

Fanout 扇出,顧名思義,就是像風(fēng)扇吹面粉一樣,吹得到處都是。如果使用fanout類型的exchange,那么routing key就不重要了。因為凡是綁定到這個exchange的queue,都會受到消息。

3、topic交換器

direct是將消息放到exchange綁定的一個queue里(一對一);

fanout是將消息放到exchange綁定的所有queue里(一對所有) 那可不可以把消息放到exchange綁定的一部分queue里,或者多個routing key可以路由到一個queue里呢?

topic類型的exchange就可以實現(xiàn)(一對部分)。

topic應(yīng)用場景:打印不同級別的錯誤日志 例如,我們的系統(tǒng)出錯后會根據(jù)不同的錯誤級別生成error_levelX.log日志,我們在后臺首先要把所有的error保存在一個總的queue(綁定了一個*.error的路由鍵)里,然后再按level分別存放在不同的queue。

routing key綁定如下圖

更多資料分享,問題咨詢,可以入群討論:375412858 請入群索要代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。