RabbitMQ 是一個消息中間件:它接收並轉發消息。您能夠把它想象爲一個郵局:當您把須要寄出的郵件投遞到郵箱,郵差最終會把郵件送給您的收件人。在這個比喻中,RabbitMQ 就是一個郵箱,也能夠理解成郵局和郵遞員。html
RabbitMQ 和郵局的主要區別在於它不處理紙張,而是接收、存儲和轉發二進制數據塊 - 消息。shell
RabbitMQ 和消息傳遞一般使用一些術語。windows
生產 的意思無非就是發送。發送消息的程序就是一個 生產者:瀏覽器
隊列 就是 RabbitMQ 內部「郵箱」的名稱。雖然消息流經 RabbitMQ 和您的應用程序,但它們只能存儲在 隊列 中。隊列 只受主機的內存和磁盤的限制,它本質上就是一個很大的消息緩衝區。多個 生產者 能夠發送消息到一個隊列,而且多個 消費者 能夠嘗試從一個 隊列 接收數據。這就是咱們表明隊列的方式:spa
消費 與接收有類似的含義,等待接收消息的程序就是一個 消費者:插件
注意:生產者、消費者和中間件不是必須部署在同一主機上,實際上在大多數應用程序中它們也不是這樣的。3d
使用 .NET / C#Clientcode
在教程的這一部分,咱們將用 C# 編寫兩個程序:一個發送單條消息的生產者,以及接收消息並將其打印出來的消費者。咱們將忽略 .NET 客戶端 API 中的一些細節,專一於更簡單的開始。這是一個消息傳遞的「Hello World」。server
在下圖中,P
是咱們的生產者,C
是咱們的消費者。中間的盒子是隊列 - RabbitMQ 表明消費者保存的消息緩衝區。htm
.NET 客戶端庫
RabbitMQ 支持多種協議,本教程使用
AMQP 0-9-1
,它是一種開放的、通用的消息傳遞協議。RabbitMQ 提供了一些針對不一樣 語言環境的客戶端,咱們將使用 RabbitMQ 提供的 .NET 客戶端。客戶端支持 .NET Core 以及 .NET Framework 4.5.1+。本教程將使用 .NET Core,所以您須要確保客戶端已 安裝 而且路徑添加到
PATH
系統變量。您也可使用 .NET Framework 來完成本教程,但設置步驟會有所不一樣。
RabbitMQ .NET 客戶端 5.0 及更高版本經過 nuget 發佈。
本教程假定您在 Windows 上使用 PowerShell。在 MacOS 和 Linux 上,幾乎全部 shell 也均可以正常工做。
一、RabbitMQ須要安裝64位支持的Erlang for Windows版本。有一個用於Erlang的Windows安裝程序。重要提示:必須使用管理賬戶運行Erlang安裝程序,不然RabbitMQ安裝程序所需的註冊表項將不存在。
而後,運行RabbitMQ安裝程序rabbitmq-server-3.7.9.exe。它將RabbitMQ安裝爲Windows服務,並使用默認配置啓動它。
RabbitMQ下載地址:http://www.rabbitmq.com/download.html
Erlang for Windows下載地址:http://www.erlang.org/downloads
二、使用管理運行otp_win64_21.1.exe安裝程序
使用系統默認便可,直接點擊Next。選擇安裝路徑後直接Next:
等待安裝完成便可。
三、安裝rabbitmq-server-3.7.9.exe,直接Next:
選擇安裝路徑,而後Next,等待安裝完成便可:
安裝完成後檢查服務中是否存在RabbitMQ的服務,RabbitMQ安裝後默認爲windows服務:
四、安裝可視化管理插件,使用cmd定位到你的安裝目下,命令以下:
rabbitmq-plugins enable rabbitmq_management
出現以下提示後在瀏覽器中訪問:http://localhost:15672/,這裏暫時沒法登錄,下面建立建立用戶帳號後纔可登陸
五、建立用戶,密碼,綁定角色
一、查看已有用戶及用戶的角色:
rabbitmqctl.bat list_users
二、建立用戶:
rabbitmqctl add_user 用戶名 密碼
在次查看用戶列表,會多出剛新建的admin用戶
三、設置用戶帳號權限,以剛建立的用戶帳號admin爲例設置爲超級管理員。 命令以下:
rabbitmqctl set_user_tags admin administrator
查看用戶列表 能夠看出多了管理員權限,訪問:http://localhost:15672/ 使用剛纔建立的用戶帳號便可登陸。
其餘相關命令以下:
//設置用戶權限 rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP //查看(指定hostpath)全部用戶的權限信息 rabbitmqctl list_permissions [-p VHostPath] //查看指定用戶的權限信息 rabbitmqctl list_user_permissions User // 清除用戶的權限信息 rabbitmqctl clear_permissions [-p VHostPath] User //刪除用戶 rabbitmqctl delete_user Username //修改用戶密碼 rabbitmqctl change_password 用戶名 新密碼
參考園裏博文:http://www.javashuo.com/article/p-yplqyfft-o.html
一、報錯信息:None of the specified endpoints were reachable,該錯誤是使用的用戶帳號沒有相應Virtual Hosts權限。登陸RabbitMQ查看用戶列表 沒有權限訪問
解決方案:點擊列表中的admin 進入以下圖所所示界面,設置權限保持默認便可。檢查Tags是不是administrator