文章目錄
- 安裝 Erlang
- 安裝 RabbitMQ
- 設定 RabbitMQ 環境變量
- 管理 rabbitmq_management 的使用者
- 測試
- 總結
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下載下傳位址:https://www.erlang.org/downloads。下載下傳Erlang安裝包後直接安裝就可以了。
設定 ERLANG_HOME 環境變量

注意:如果之前安裝了 Erlang的其他版本,需要解除安裝後在進行重新安裝和設定。
在開始菜單查找 Erlang,點選啟動 打開如下界面,那麼 Erlang 就安裝成功了。接下來就安裝 RabbitMQ。
安裝 RabbitMQ
可以在 RabbitMQ 的官方網站下載下傳最新版本的 RabbitMQ 伺服器安裝程式,RabbitMQ 下載下傳位址:https://www.rabbitmq.com/install-windows.html 然後點選預設安裝。
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 的所有插件:
rabbitmq-plugins list
看到 RabbtitMQ 羅列出來了很多插件
我們用下列指令安裝 rabbitmq_management 插件,這款插件是可以可視化的方式檢視 RabbitMQ 伺服器執行個體的狀态,以及操控 RabbitMQ 伺服器。
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 代表的是權限,administrator 是最高權限,none 表示不能通路,這裡 administrator 和 none 的組合,權限應該是向高看齊,忽略 none,用的是 administrator 的權限。我們用 rabbit1 / rabbit1 登入 rabbitmq_management。
其實有了 rabbitmq_management 這個可視化插件,很多事情都可以在這個插件裡幹,包括建立使用者,建立交換機(Exchange)和建立隊列(Queque)。
關于 Rabbit 的在 windows 下的基本配置就告一段落,關于更多的更進階的配置,可以參考官網,有了 rabbitmq_management 插件确實友善了不少。下面就開始建立用戶端進行測試了。
測試
建立兩個 .Net Core Console 類型的應用程式,一個用于發送消息,一個用于接收消息。
- 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();
}
}
}
- 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 下的安裝和基本設定步驟:
- 安裝對應版本的 Erlang 并設定環境變量
- 安裝 RabbitMQ
- 設定環境變量
- 安裝插件 rabbitmq_management
- 有了插件 rabbitmq_management 很多事情就可以在這個可視化插件中來完成了。