RabbitMQ安裝配置和基於EasyNetQ驅動的基礎使用

RabbitMQ基本概念和原理

1.AMQP,即Advanced Message Queuing Protocol,高級消息隊列協議,是應用層協議的一個開放標準,爲面向消息的中間件設計。html

2.RabbitMQ是一個開源的AMQP實現,服務器端用Erlang語言編寫。windows

3.Channel 瀏覽器

  Channel是咱們與RabbitMQ打交道的最重要的一個接口,咱們大部分的業務操做是在Channel這個接口中完成的,包括定義Queue、定義Exchange、綁定Queue與Exchange、發佈消息等。服務器

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

5.Queue(RabbitMQ的內部對象,用於存儲消息)學習

6.基本工做原理測試

 客戶端(生產者) send Message -->Exchange (交換機經過不一樣的類型將消息保存到對應的queue)-->Queue  ui

 客戶端(消費者)經過訂閱來消費queue中的消息。url

 以上基礎概念整理來源於 RabbitMQ基礎概念詳細介紹 spa

在Windows系統中安裝RabbitMQ

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

      下載地址 http://www.erlang.org/downloads(根據操做系統選擇32還64位)  

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

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

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

    

     接下來用啓用DOS命令

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

 

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

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

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

 

輸入來賓帳號 guest 密碼 guest ,成功登錄進來,是否是有點小激動。

 guest 帳號是管理員帳號,能夠添加Exchanges,Queues,Admin。但咱們通常不使用guest帳號,繼續用命令來添加帳號和權限。

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

 

e:添加「超級管理員」角色: rabbitmqctl.bat set_user_tags username administrator

 

mymq帳號也是超級管理員了,Can access virtual hosts :No access ,能夠看到尚未可以訪問的虛擬機,接下來添加虛擬機。

f: 添加虛擬機:  rabbitmqctl add_vhost vhostName

 myvhost虛擬機並無Users,接下來給虛擬機綁定帳號。

g:定虛擬機和用戶權限:rabbitmqctl set_permissions -p 虛擬機名稱 帳戶名 ".*" ".*" ".*"

 

h:處於習慣我通常刪除掉guest帳號:rabbitmqctl.bat delete_user username

 好了,從新登錄管理頁面,一切正常,接下來開始實戰了。 

EasyNetQ的基本使用

項目中安裝EasyNetQ

EasyNetQ是依賴於RabbitMQ.Client的,因此會被一併安裝到項目中。

Publish發佈消息

 

Model有個Queue的特性,定義Queue名稱和Exchange名稱。而後直接用Publish方法把Msg經過Model指定的交換機推送到指定隊列去。

運行代碼,看看MQ的管理頁面。

 已經建立了Model指定的交換機TestQueue.Exchange, Type:topic , Features:D 。D:Durable 說明默認建立的交換機是持久化的。

 由於尚未訂閱消息,因此在Queues中還看不到對應的隊列。

 Subscribe訂閱消息

  

 爲何要在訂閱代碼上套一個while(true)了? 是爲了把控制檯程序模擬成Windows服務,由於控制檯程序運行一閃而過,沒辦法真正訂閱到MQ的消息。

 實際開發中,通常用Topself來把控制檯程序發佈成Windows服務,後面有時間再寫一篇關於Topself的學習博客。

 再重複剛纔的Publish操做,測試下整個流程。

 

自定義Topic

這樣消息會被髮送到名稱爲Test.開頭的全部Queue隊列中。

SendReceive

經過send和receive能夠將消息發送到指定隊列。

 

本文博客園地址:http://www.cnblogs.com/struggle999/p/6937530.html 

相關文章
相關標籤/搜索