惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
The Cloudflare Blog
D
DataBreaches.Net
J
Java Code Geeks
G
Google Developers Blog
L
LangChain Blog
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
小众软件
小众软件
量子位
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
博客园_首页
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
腾讯CDC

博客园 - 蓝之风

解决:gradle 前言中不允许有内容 【LINQ标准查询操作符总结】之聚合操符 RxJS 中的创建操作符 项目管理(1) 什么是项目? 数据库表数据统计及数据表的数据大小统计SQL C# 中一些类关系的判定方法 Windows Azure NotificationHub+Firebase Cloud Message 实现消息推动(付源码) 【设计模式】组合模式实现二叉树先序遍历,中序遍历和后序遍历 【设计模式】组合模式 Composite Pattern 【设计模式】桥接模式 Bridge Pattern 在VS 2017 下创建 Xamarin NuGet Package 【设计模式】适配器模式 Adapter Pattern 基础查找算法(顺序无序查找算法和递归二叉查找算法) 【设计模式】原型模式 Pototype Pattern 三个基本排序算法执行效率比较(冒泡排序,选择排序和插入排序) 【设计模式】单例模式 Singleton Pattern 【设计模式】建造者模式 Builder Pattern 【设计模式】抽象工厂模式 Abstract Factory Pattern 【设计模式】工厂方法模式 Factory Method Pattern
Windows 下安装RabbitMQ服务器及基本配置
蓝之风 · 2018-08-24 · via 博客园 - 蓝之风

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 环境变量

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, 然后点击默认安装。

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_tags [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很多事情就可以在这个可视化插件中来完成了。