Windows 下安裝RabbitMQ服務器及基本配置

RabbitMQ是一個在AMQP協議標準基礎上完整的,可複用的企業消息系統。它遵循Mozilla Public License開源協議,採用 Erlang 實現的工業級的消息隊列(MQ)服務器,Rabbit MQ 是創建在Erlang OTP平臺上。html

裝RabbitMQ服務器必須首先安裝 Erlang 運行環境。android

安裝Erlang

安裝Erlang 時要注意安裝的RabbityMQ 所依賴的Erlang版本,根據RabbitMQ的要求選擇一個版本,這裏我要安裝的RabbitMQ的版本是 3.7.7 ,他依賴的Erlang版本範圍是windows

19.3.6.4 到 21.0.x,所以我選擇版本是OTP 20.3. Erlang下載地址。下載Erlang安裝包後直接安裝就能夠了。api

設置ERLANG_HOME 環境變量

image

我這裏是默認安裝因此Erlang的安裝路徑在:瀏覽器

C:\Program Files\erl9.3\bin\erl.exe

點擊肯定在系統環境變量裏就增長剛剛添加的ERLANG_HOME服務器

image

注意:若是以前安裝了Erlang的其餘版本,須要卸載後在進行從新安裝和設置。測試

在開始菜單查找Erlang,點擊啓動 打開以下界面,那麼Erlang就安裝成功了。接下來就安裝RabbitMQ。網站

image

安裝RabbitMQ

能夠在RabbitMQ的官方網站下載最新版本的RabbitMQ服務器安裝程序,RabbitMQ下載地址, 這裏我下載的是官方推薦的最新版本rabbitmq-server-3.7.7.exe, 而後點擊默認安裝。spa

RabbitMQ安裝好後是做爲windows service 運行在後臺。插件

image

設置RabbitMQ環境變量

RabbitMQ 安裝好後在開始菜單輸入rabbitmq 會看到三個菜單:

image

這裏的三個菜單是提供控制Windows service的命令,爲了可以在任意Windows命令窗口上操控RabbitMQ服務須要在系統里加一個環境變量而且配置在系統的PHTH環境變量中。

首先添加一個RABBITQM_SERVER變量:

image

而後在系統的path變量中配置以下:

image

這樣就能夠在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 羅列出來了不少插件

image

咱們用下列命令安裝rabbitmq_management插件,這款插件是能夠可視化的方式查看RabbitMQ 服務器實例的狀態,以及操控RabbitMQ服務器。

C:\WINDOWS\system32>rabbitmq-plugins enable rabbitmq_management

運行完命令後,看到下圖表示安裝成功了。

image

如今咱們在瀏覽器中輸入:http://localhost:15672 能夠看到一個登陸界面:

image

這裏可使用默認帳號guest/guest登陸後的界面以下:

image

在瀏覽器中輸入 http://localhost:15672/api/ 就能夠看到 RabbitMQ Management HTTP API 文檔,以下圖:

image

這樣就能夠查看RabbitMQ server實例狀態的相關信息了。

管理rabbitmq_management的用戶

用命令rabbitmqctl list_users 查看一下現rabbitmq_management註冊用戶

image

發現如今只有一個用戶guest,而且它的tag是administrator.

那麼在命令行下建立一個用戶,建立用戶的命令合是:

rabbitmqctl add_user [username] [password]

如今建立一個username=rabbit1 password=rabbit1的用戶, 命令以下:

rabbitmqctl add_user rabbit1 rabbit1

建立成功了:

image

如今看下有多少用戶,跑一下命令:

rabbitmqctl list_users

image

發現用戶列表裏多了一個用戶 rabbit1,可是tag是空的。使用命令給rabbit設置tag,設置tag的命令格式:

rabbitmqctl set_user_tag [tag1] [tag2] ...

一次能夠給一個用戶設置多個tag,也能夠設置一個

image

如今rabbit1 有兩個tag了一個是administrator ,一個是none.

有5個tag可供選擇,分別是:administrator ,monitoring,policymaker,management和none 有興趣的同窗能夠到這裏瞭解各個tag的含義,其實這裏的tag表明的是權限,administrator是最高權限,none表示不能訪問,這裏administrator和none的組合,權限應該是向高看齊,忽略none,用的是administrator的權限。咱們用rabbit1/rabbit1 登陸rabbitmq_management。

image

其實有了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();
            }
        }
    }
}

運行輸入消息效果以下:

volleybot-android-90

 

總結:

關於RabbitMQ在windows 下的安裝和基本設置步驟:

1.安裝對應版本的Erlang 並設置環境變量

2.安裝RabbitMQ

3.設置環境變量

4.安裝插件rabbitmq_management

5.有了插件rabbitmq_management不少事情就能夠在這個可視化插件中來完成了。

相關文章
相關標籤/搜索