RabbitMQ是一個在AMQP協議標準基礎上完整的,可複用的企業訊息系統。它遵循Mozilla Public License開源協議,採用 Erlang 實現的工業級的訊息佇列(MQ)伺服器,Rabbit MQ 是建立在Erlang OTP平台上。
裝RabbitMQ伺服器必須首先安裝 Erlang 運行環境。
安裝Erlang
安裝Erlang 時要注意安裝的RabbityMQ 所依賴的Erlang版本,根據RabbitMQ的要求選擇一個版本,這裡我要安裝的RabbitMQ的版本是 3.7.7 ,他依賴的Erlang版本範圍是
19.3.6.4 到 21.0.x,因此我選擇版本是OTP 20.3. Erlang。下載Erlang安裝包後直接安裝就可以了。
設定ERLANG_HOME 環境變數
我這裡是預設安裝所以Erlang的安裝路徑在:
C:\Program Files\erl9.3\bin\erl.exe
點擊確定在系統內容變數裡就增加剛剛添加的ERLANG_HOME
注意:如果之前安裝了Erlang的其他版本,需要卸載後在進行重新安裝和設定。
在開始菜單尋找Erlang,點擊啟動 開啟如下介面,那麼Erlang就安裝成功了。接下來就安裝RabbitMQ。
安裝RabbitMQ
可以在RabbitMQ的官方網站下載最新版本的RabbitMQ伺服器安裝程式,RabbitMQ, 這裡我下載的是官方推薦的最新版本rabbitmq-server-3.7.7.exe, 然後點擊預設安裝。
RabbitMQ安裝好後是作為windows service 運行在後台。
設定RabbitMQ環境變數
RabbitMQ 安裝好後在開始菜單輸入rabbitmq 會看到三個菜單:
這裡的三個菜單是提供控制Windows service的命令,為了能夠在任意Windows命令視窗上操控RabbitMQ服務需要在系統裡加一個環境變數並且配置在系統的PHTH環境變數中。
首先添加一個RABBITQM_SERVER變數:
然後在系統的path變數中配置如下:
這樣就可以在windows administrator啟動的CMD視窗操控RabbitMQ服務了。不需要每次都定位到:
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.7\sbin>
安裝 rabbitmq_management
我們用命令查看一下RabbtitMQ的所有外掛程式:
C:\WINDOWS\system32>rabbitmq-plugins list
看到RabbtitMQ 羅列出來了很多外掛程式
我們用下列命令安裝rabbitmq_management外掛程式,這款外掛程式是可以可視化的方式查看RabbitMQ 伺服器執行個體的狀態,以及操控RabbitMQ伺服器。
C:\WINDOWS\system32>rabbitmq-plugins enable rabbitmq_management
運行完命令後,看到表示安裝成功了。
現在我們在瀏覽器中輸入:http://localhost:15672 可以看到一個登入介面:
這裡可以使用預設帳號guest/guest登入後的介面如下:
在瀏覽器中輸入 http://localhost:15672/api/ 就可以看到 RabbitMQ Management HTTP API 文檔,如:
這樣就可以查看RabbitMQ server執行個體狀態的相關資訊了。
管理rabbitmq_management的使用者
用命令rabbitmqctl list_users 查看一下現rabbitmq_management註冊使用者
發現現在只有一個使用者guest,並且它的tag是administrator.
那麼在命令列下建立一個使用者,建立使用者的命令合是:
rabbitmqctl add_user [username] [password]
現在建立一個username=rabbit1 password=rabbit1的使用者, 命令如下:
rabbitmqctl add_user rabbit1 rabbit1
建立成功了:
現在看下有多少使用者,跑一下命令:
rabbitmqctl list_users
發現使用者列表裡多了一個使用者 rabbit1,但是tag是空的。使用命令給rabbit設定tag,設定tag的命令格式:
rabbitmqctl set_user_tag [tag1] [tag2] ...
一次可以給一個使用者佈建多個tag,也可以設定一個
現在rabbit1 有兩個tag了一個是administrator ,一個是none.
有5個tag可供選擇,分別是:administrator ,monitoring,policymaker,management和none 有興趣的同學可以到這裡瞭解各個tag的含義,其實這裡的tag代表的是許可權,administrator是最高許可權,none表示不能訪問,這裡administrator和none的組合,許可權應該是向高看齊,忽略none,用的是administrator的許可權。我們用rabbit1/rabbit1 登入rabbitmq_management。
其實有了rabbitmq_management這個可視化外掛程式,很多事情都可以在這個外掛程式裡幹,包括建立使用者,建立交換器(Exchange)和建立隊列(Queque)。
關於Rabbit的在windows下的基本配置就告一段落,關於更多的更進階的配置,可以參考官網,有了rabbitmq_management 外掛程式確實方便了不少。下面就開始建立用戶端進行測試了。
測試
建立兩個.Net Core Console 類型的應用程式,一個用於發送訊息,一個用於接收訊息。
1. Send 端代碼:
using System;using System.Text;using RabbitMQ.Client;namespace Q.Demo.Send{ class Program { static void Main(string[] args) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null); while (true) { var input = Console.ReadLine(); string message = input; var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body); Console.WriteLine(" [x] Sent {0}", message); } } Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } }}
2.Receive端代碼:
using System;using System.Text;using RabbitMQ.Client;using RabbitMQ.Client.Events;namespace Q.Demo.Receive{ class Program { static void Main(string[] args) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var body = ea.Body; var message = Encoding.UTF8.GetString(body); Console.WriteLine(" [x] Received {0}", message); }; channel.BasicConsume(queue: "hello", autoAck: true, consumer: consumer); Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } } }}
運行輸入訊息效果如下:
總結:
關於RabbitMQ在windows 下的安裝和基本設定步驟:
1.安裝對應版本的Erlang 並設定環境變數
2.安裝RabbitMQ
3.設定環境變數
4.安裝外掛程式rabbitmq_management
5.有了外掛程式rabbitmq_management很多事情就可以在這個可視化外掛程式中來完成了。