[推荐] Windows 安装和配置 RabbitMQ 服务器详细步骤+图解

RabbitMQ是一个在AMQP协议标准基础上完善的,可复用的消息中间件。

它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上;

具有可伸缩性(即集群服务),消息持久化的特性。

好文章 记得收藏+点赞+关注额 !!!

---- Nick.Peng


一、下载并安装 Erlang

因为 RabbitMQ 服务器是基于 Erlang 环境的,所以安装 RabbitMQ 服务器前必须先安装 Erlang;

安装 Erlang 时要注意安装的 RabbityMQ 所依赖的 Erlang 版本,根据 RabbitMQ 的要求选择一个版本,这里我要安装的RabbitMQ 的版本是 3.8.1 ,他依赖的 Erlang 版本范围是 21.3.x ~ 22.x,因此我选择版本是 OTP 22.1. Erlang下载地址

也可点击查看:RabbitMQ 对应的 Erlang 依赖版本地址

  • 安装 Erlang

    找到下载的文件,直接按照以下步骤安装即可,如图:
    在这里插入图片描述

  • 设置 ERLANG_HOME 环境变量

    在桌面右击 此电脑–>点击属性,按下图所示步骤设置即可:
    在这里插入图片描述
    注意:如果之前安装了Erlang的其他版本,需要卸载后在进行重新安装和设置。

  • 验证Erlang是否安装成功:

    快捷键 win+Q,在输入框输入 Erlang,点击启动 Erlang,出现如下界面,说明Erlang安装成功了。接下来就安装RabbitMQ。
    在这里插入图片描述

二、下载并安装 RabbitMQ

进入RabbitMQ的官方网站下载最新版本的RabbitMQ服务器安装程序

  • 安装 RabbitMQ

    找到下载文件rabbitmq-server-3.8.1.exe,然后双击按照以下步骤安装即可;安装完成后会作为系统服务自动启动
    在这里插入图片描述

  • 设置RABBITQM_SERVER环境变量

    为了能够在任意Windows命令窗口上操控RabbitMQ服务,我们需要设置设置RABBITQM_SERVER环境变量,并且将其添加到系统的 PHTH 环境变量中。如图:
    在这里插入图片描述
    这样就可以在windows administrator启动的CMD窗口操控RabbitMQ服务了。不需要每次都定位到:
    D:\Develop\RabbitMQ Server\rabbitmq_server-3.8.1\sbin>

三、安装 rabbitmq_management

  • 查看 RabbtitMQ 的所有插件

    输入命令:rabbitmq-plugins list,可以看到 RabbtitMQ 的所有插件,如图:
    在这里插入图片描述

  • 安装 rabbitmq_management 可视化界面插件

    输入命令:rabbitmq-plugins enable rabbitmq_management,即可安装可视化界面插件,运行完命令后,看到下图表示安装成功了;这款插件可以以操作界面的方式查看RabbitMQ 服务器实例的状态,以及操控RabbitMQ服务器。
    在这里插入图片描述

    现在我们在浏览器中输入:http://localhost:15672 可以看到一个登录界面:
    在这里插入图片描述
    这里可以使用默认账号guest/guest登录后的界面如下:
    在这里插入图片描述
    在浏览器中输入 http://localhost:15672/api/ 就可以看到 RabbitMQ Management HTTP API 文档,如下图:
    在这里插入图片描述

四、管理 rabbitmq_management 用户

  • 查看 rabbitmq 已注册用户

    命令:rabbitmqctl list_users
    在这里插入图片描述
    发现现在只有一个用户guest,并且它的tag是administrator.

  • 创建一个用户

    命令:rabbitmqctl add_user [username] [password] 即:rabbitmqctl add_user root root
    在这里插入图片描述
    现在看下有多少用户,输入命令:rabbitmqctl list_users
    在这里插入图片描述
    发现用户列表里多了一个用户 root,但是tag是空的。

  • 给用户root设置tag

    命令:rabbitmqctl set_user_tags root administrator ...
    在这里插入图片描述
    出现上图表明设置tag成功;tag 共有5种,分别是:administrator ,monitoring,policymaker,management和none,其实这里的tag代表的是权限,administrator是最高权限。

    注意:上述讲的是用命令创建用户,给用户添加权限;另在可视化界里面也可以创建用户,创建交换机(Exchange)和创建队列(Queque)等等。

五、利用Python实现测试

  • RabbitMQ 常见实现方式有5种,这里用 topic 来举例,原理图如下:
    在这里插入图片描述

  • Producer 生产者代码

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import pika
    import sys
    
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
    channel = connection.channel()  # 创建一个通道
    
    channel.exchange_declare(exchange='topic_logs', exchange_type='topic')
    
    routing_key = sys.argv[1] if len(sys.argv) > 2 else 'anonymous.info'    # 声明queue, 可接受命令行传参
    
    message = ' '.join(sys.argv[2:]) or 'Hello World!'
    
    channel.basic_publish(
        exchange='topic_logs',      # 交换机,按指定的策略转发到不同Queue
        routing_key=routing_key,    # 发送至queue的名字
        body=message)               # 发送的消息内容
    print(" [x] Sent %r:%r" % (routing_key, message))
    
    connection.close()
    
  • Consumer 消费者代码

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import time
    import pika
    import sys
    
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
    channel = connection.channel()	# 创建一个通道
    
    channel.exchange_declare(exchange='topic_logs', exchange_type='topic')
    
    result = channel.queue_declare('', exclusive=True)
    queue_name = result.method.queue
    
    binding_keys = sys.argv[1:]
    if not binding_keys:
        sys.stderr.write("Usage: %s [binding_key]...\n" % sys.argv[0])
        sys.exit(1)
    
    for binding_key in binding_keys:
        channel.queue_bind(
            exchange='topic_logs', queue=queue_name, routing_key=binding_key)
    
    
    def callback(ch, method, properties, body):
        # 回调函数
        # time.sleep(30)
        print(" [x] %r:%r" % (method.routing_key, body))
        # ch.basic_ack(delivery_tag=method.delivery_tag)    # 服务器确认是否处理完毕
    
    
    channel.basic_consume(  # 消费消息
        queue=queue_name,   # 如果收到消息,就调用callback函数来处理消息
        on_message_callback=callback,	# 告诉rabbitMQ使用callback来接收消息
        auto_ack=True)      # 服务器不确认消息是否处理完毕
    
    # 开始接收信息,并进入阻塞状态,队列里有信息才会调用callback进行处理,按ctrl+c退出
    print(' [*] Waiting for logs. To exit press CTRL+C')
    channel.start_consuming()
    
  • 分别运行 consumer.py 和 producer.py 输入消息和接收消息效果如下:
    在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值