zoukankan      html  css  js  c++  java
  • winddows rabbitmq安装与配置

    RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。

    装RabbitMQ服务器必须首先安装 Erlang 运行环境。

    注意,RabbitMQ安装的时候会占用几个端口,防火墙和其他安全工具可能会阻止RabbitMQ绑定到端口。当这种情况发生时,RabbitMQ将无法启动。确保可以打开以下端口,当然也可以安装好后自己通过修改配置文件来修改占用的端口,然后开启服务。

    • 4369:epmd,RabbitMQ节点和CLI工具使用的对等发现服务
    • 5672,5671:由AMQP 0-9-1和1.0客户端使用,不带TLS和TLS
    • 25672:Erlang分发用于节点间和CLI工具通信,并从动态范围分配(默认情况下限制为单个端口,计算为AMQP端口+ 20000)。有关详细信息,请参阅网络指南
    • 15672:HTTP API客户端和rabbitmqadmin(仅当启用管理插件时)
    • 61613,61414:没有和使用TLS的STOMP客户端(只有启用了STOMP插件
    • 1883,8883 :( MQTT客户端没有和带有TLS,如果启用了MQTT插件
    • 15674:STOMP-over-WebSockets客户端(只有启用了Web STOMP插件
    • 15675:MQTT-over-WebSockets客户端(仅当启用了Web MQTT插件时)

    安装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 Fileserl9.3inerl.exe

    点击确定在系统环境变量里就增加刚刚添加的ERLANG_HOME

     在开始菜单查找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 FilesRabbitMQ Server abbitmq_server-3.7.7sbin>

    安装 rabbitmq_management

    我们用命令查看一下RabbtitMQ的所有插件:

    C:WINDOWSsystem32>rabbitmq-plugins list

    看到RabbtitMQ 罗列出来了很多插件

    我们用下列命令安装rabbitmq_management插件,这款插件是可以可视化的方式查看RabbitMQ 服务器实例的状态,以及操控RabbitMQ服务器。

    C:WINDOWSsystem32>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)。

    
    

    测试

    创建两个.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();
                }
            }
        }
    }

    运行输入消息效果如下:


    可视化方式查看Rabbit MQ 服务器实例的状态。
    输入命令:rabbitmq-plugins.bat enable rabbitmq_management

    重启服务器

    net stop RabbitMQ && net start RabbitMQ

    查看已有用户及用户的角色:rabbitmqctl.bat list_users   默认会存在一个来宾账号 guest
    新增一个用户:rabbitmqctl.bat add_user username password

    下面给cywadmin来增加administrator角色

    rabbitmqctl.bat set_user_tags username administrator

    修改密码

    guest的默认密码是guest,可以修改密码

    同样也可以删除用户

    rabbitmqctl.bat delete_user username

    rabbitmq用户角色可分为五类:超级管理员, 监控者, 策略制定者, 普通管理者以及其他

    (1)超级管理员(administrator)

    可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

    (2)监控者(monitoring)

    可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

    (3)策略制定者(policymaker)

    可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。

    (4)普通管理者(management)

    仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

    (5) 其他的



    来源: https://www.cnblogs.com/vaiyanzi/p/9531607.html

    https://www.cnblogs.com/5ishare/p/6716142.html

  • 相关阅读:
    BZOJ1263: [SCOI2006]整数划分
    BZOJ2084: [Poi2010]Antisymmetry
    storage和memory
    快速理解区块链
    IPNS节点ID
    创建上传目录存储文件
    ipfs上传下载
    Solidity函数view,pure,constant的用法
    Truffle框架环境搭建
    以太坊常用钱包(测试币获取)
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/11297144.html
Copyright © 2011-2022 走看看