安裝RabbitMQ服務器及基本配置


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。

image

安裝RabbitMQ

可以在RabbitMQ的官方網站下載最新版本的RabbitMQ服務器安裝程序,RabbitMQ下載地址, 這里我下載的是官方推薦的最新版本rabbitmq-server-3.7.7.exe, 然后點擊默認安裝。

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服務器。

首先打開rabbuitmq的sbin目錄

 

 

輸入rabbitmq-plugins enable rabbitmq_managment

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

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很多事情就可以在這個可視化插件中來完成了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM