溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

發(fā)布時(shí)間:2020-07-19 20:45:18 來(lái)源:網(wǎng)絡(luò) 閱讀:719 作者:zddnd 欄目:建站服務(wù)器

RabbitMQ基本概念和原理

1.AMQP,即Advanced Message Queuing Protocol,高級(jí)消息隊(duì)列協(xié)議,是應(yīng)用層協(xié)議的一個(gè)開放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計(jì)。

2.RabbitMQ是一個(gè)開源的AMQP實(shí)現(xiàn),服務(wù)器端用Erlang語(yǔ)言編寫。

3.Channel 

  Channel是我們與RabbitMQ打交道的最重要的一個(gè)接口,我們大部分的業(yè)務(wù)操作是在Channel這個(gè)接口中完成的,包括定義Queue、定義Exchange、綁定Queue與Exchange、發(fā)布消息等。

4.Exchange(生產(chǎn)者將消息發(fā)送到Exchange(交換器),由Exchange將消息路由到一個(gè)或多個(gè)Queue中(或者丟棄),RabbitMQ常用的Exchange Type有fanout、direct、topic、headers這四種)

5.Queue(RabbitMQ的內(nèi)部對(duì)象,用于存儲(chǔ)消息)

6.基本工作原理

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

 客戶端(生產(chǎn)者) send Message -->Exchange (交換機(jī)通過不同的類型將消息保存到對(duì)應(yīng)的queue)-->Queue  

 客戶端(消費(fèi)者)通過訂閱來(lái)消費(fèi)queue中的消息。

 以上基礎(chǔ)概念整理來(lái)源于 RabbitMQ基礎(chǔ)概念詳細(xì)介紹 

在Windows系統(tǒng)中安裝RabbitMQ

  1. 下載安裝erlang (我用的是otp_win64_19.3版本)  

      下載地址 http://www.erlang.org/downloads(根據(jù)操作系統(tǒng)選擇32還64位)  

  2. 下載安裝rabbitmq-server(我用的是rabbitmq-server-3.6.10版本)

     下載地址 http://www.rabbitmq.com/install-windows.html

     安裝好后,在看裝目錄下看到

    RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

     接下來(lái)用啟用DOS命令

a. cd 到sbin目錄下,我的安裝目錄是D:\RabbitMQServer\rabbitmq_server-3.6.10\sbin, 輸入D: 回車,cd  RabbitMQServer\rabbitmq_server-3.6.10\sbin

 RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

b. 查看安裝是否成功命令 :rabbitmqctl status

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

c.安裝管理插件命令:rabbitmq-plugins enable rabbitmq_management

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

安裝成功,在瀏覽器中輸入 http://127.0.0.1:15672/

 RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

輸入來(lái)賓賬號(hào) guest 密碼 guest ,成功登陸進(jìn)來(lái),是不是有點(diǎn)小激動(dòng)。

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

 guest 賬號(hào)是管理員賬號(hào),可以添加Exchanges,Queues,Admin。但我們一般不使用guest賬號(hào),繼續(xù)用命令來(lái)添加賬號(hào)和權(quán)限。

d:添加用戶:rabbitmqctl.bat add_user username password

 RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

e:添加“超級(jí)管理員”角色: rabbitmqctl.bat set_user_tags username administrator

 RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

mymq賬號(hào)也是超級(jí)管理員了,Can access virtual hosts :No access ,可以看到還沒有能夠訪問的虛擬機(jī),接下來(lái)添加虛擬機(jī)。

f: 添加虛擬機(jī):  rabbitmqctl add_vhost vhostName

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

 myvhost虛擬機(jī)并沒有Users,接下來(lái)給虛擬機(jī)綁定賬號(hào)。

g:定虛擬機(jī)和用戶權(quán)限:rabbitmqctl set_permissions -p 虛擬機(jī)名稱 賬戶名 ".*" ".*" ".*"

 RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

h:處于習(xí)慣我一般刪除掉guest賬號(hào):rabbitmqctl.bat delete_user username

 好了,重新登陸管理頁(yè)面,一切正常,接下來(lái)開始實(shí)戰(zhàn)了。 

EasyNetQ的基本使用

項(xiàng)目中安裝EasyNetQ

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

EasyNetQ是依賴于RabbitMQ.Client的,所以會(huì)被一并安裝到項(xiàng)目中。

Publish發(fā)布消息

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用 

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

Model有個(gè)Queue的特性,定義Queue名稱和Exchange名稱。然后直接用Publish方法把Msg通過Model指定的交換機(jī)推送到指定隊(duì)列去。

運(yùn)行代碼,看看MQ的管理頁(yè)面。

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

 已經(jīng)創(chuàng)建了Model指定的交換機(jī)TestQueue.Exchange, Type:topic , Features:D 。D:Durable 說(shuō)明默認(rèn)創(chuàng)建的交換機(jī)是持久化的。

 因?yàn)檫€沒有訂閱消息,所以在Queues中還看不到對(duì)應(yīng)的隊(duì)列。

 Subscribe訂閱消息

  RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

 為什么要在訂閱代碼上套一個(gè)while(true)了? 是為了把控制臺(tái)程序模擬成Windows服務(wù),因?yàn)榭刂婆_(tái)程序運(yùn)行一閃而過,沒辦法真正訂閱到MQ的消息。

 實(shí)際開發(fā)中,一般用Topself來(lái)把控制臺(tái)程序發(fā)布成Windows服務(wù),后面有時(shí)間再寫一篇關(guān)于Topself的學(xué)習(xí)博客。

 再重復(fù)剛才的Publish操作,測(cè)試下整個(gè)流程。

 RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

自定義Topic

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

這樣消息會(huì)被發(fā)送到名稱為Test.開頭的所有Queue隊(duì)列中。

Send和Receive

通過send和receive可以將消息發(fā)送到指定隊(duì)列。

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用

RabbitMQ安裝配置和基于EasyNetQ驅(qū)動(dòng)的基礎(chǔ)使用


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI