在 Windows 系统上安装 RabbitMQ

1. 下载安装 Erlang

RabbitMQ的安装依赖于Erlang,所以需要先安装对应版本的64Erlang。参见 RabbitMQ Erlang 版本要求

这里我准备安装当前最新版的RabbitMQ 3.7.8,根据版本要求,需要提前安装21.x版本的Erlang。这里我下载21.0.1版本:下载地址

请注意,必须使用管理员身份运行来安装Erlang,否则RabbitMQ Windows 服务将无法发现它。右键安装程序,以管理员身份运行:

选择安装目录,直接点击Next安装即可。

中间需要安装相关的C++环境,正常安装即可。

2. 下载安装 RabbitMQ

Erlang安装完毕后,请下载RabbitMQ安装程序rabbitmq-server-{version}.exe 并运行它。将会把RabbitMQ安装为Windows服务,并使用默认配置启动它。

这里我将安装RabbitMQ 3.7.8。下载RabbitMQ 3.7.8下载地址

官方地址下载有时较慢,这里了分享一个百度网盘地址:百度网盘下载

双击运行安装程序,直接点击Next,选择安装目录,点击Install安装就行。

安装完毕会在任务管理器看到RabbitMQ服务启动了。(这里出现了一个问题,后面的4.1.具体说明)

3. 管理界面

3.1. 安装管理界面

打开 CMD 命令行窗口,进入RabbitMQ安装目录的sbin目录下,我的目录为:

xml 复制代码
D:\Programmer\RabbitMQ Server\rabbitmq_server-3.8.14\sbin

执行下面的命令:

xml 复制代码
rabbitmq-plugins enable rabbitmq_management

具体操作,可以在这个sbin目录下直接打开CMD命令行窗口,方法:先进入这个目录,在地址栏输入cmd回车,直接就会打开已经入当前目录的命令行窗口。

执行命令:

bash 复制代码
Microsoft Windows [版本 10.0.19042.867]
(c) 2020 Microsoft Corporation. 保留所有权利。

D:\Programmer\RabbitMQ Server\rabbitmq_server-3.7.8\sbin>rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@DESKTOP-JUNZHU127-PC:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@DESKTOP-JUNZHU127-PC...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.

D:\Programmer\RabbitMQ Server\rabbitmq_server-3.7.8\sbin>

到这里管理界面就安装成功了。

3.2. 访问管理界面

接下来就可以使用浏览器登录到控制台进行管理了。在浏览器里输入http://localhost:15672即可访问管理界面:

登录账号和密码都是:guest,登录后界面如下:

可以在Admin中进行用户管理,比如修改密码,添加账户等。这里简单说下账户的几种角色:

  • 管理员(management:用户可以访问管理插件
  • 决策人(policymaker:用户可以访问管理插件并管理他们可以访问的 host 的策略和参数。
  • 监控(monitoring:用户可以访问管理插件,查看所有连接和通道以及节点相关信息。
  • 系统管理员(administrator:用户可以做监控所能做的一切,管理用户、虚拟主机和权限,关闭其他用户的连接,以及管理所有虚拟主机的策略和参数。

4. 遇到的问题

4.1. RabbitMQ 服务自动停止

Windows 下安装RabbitMQ后,正常情况下RabbitMQ会自动注册服务并自动启动,但是在安装好RabbitMQ服务之后,我发现在任务管理器中RabbitMQ显示的状态是已停止,当我手动点击开始后,几秒钟后还是会变为已停止。

出现这种情况一般都是由于我们的用户名是中文,而导致默认的 db 和 log 访问出现问题。我的用户名是中文,C:\Users\张三。目前有两种处理方式,一种是修改用户名,不过查了下,比较麻烦;第二种就是不让 db 和 log 访问默认地址,我们指定一个地址,方法如下:

我们先卸载已安装的RabbitMQ,直接在控制面板中的程序卸载就行。然后在我们的系统变量里设置一个RABBITMQ_BASE的变量路径为一个不含英文的路径,比如D:\Programmer\rabbitmq,接下来重新安装RabbitMQ即可,然后就会看到RabbitMQ服务自动注册了,并且不会自动停止了。

可以看到我们指定的目录下生成了RabbitMQ相关的文件。

所以建议以后大家在使用 Windows 操作系统的时候尽量用英文来命名文件或目录,这样会极大的减小以后安装软件出现莫名其妙的问题。

4.2. 管理界面插件启动失败

本来是要安装当前最新的Erlang 23.3RabbitMQ 3.8.14,但是在安装管理界面插件的时候出现了下面的错误,未能成功安装。所以卸载重新安装了旧的版本。这是下载的最新的文件:

这是命令行提示的错误:

bash 复制代码
C:\Users\张三>D:

D:\>cd "\Programmer\RabbitMQ Server\rabbitmq_server-3.8.14\sbin"

D:\Programmer\RabbitMQ Server\rabbitmq_server-3.8.14\sbin>rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@DESKTOP-JUNZHU127-PC:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@DESKTOP-JUNZHU127-PC...
Stack trace:

** (CaseClauseError) no case clause matching: {:could_not_start, :rabbitmq_management_agent, {:rabbitmq_management_agent, {{:shutdown, {:failed_to_start_child, :rabbit_mgmt_agent_sup, {:shutdown, {:failed_to_start_child, :rabbit_mgmt_external_stats, {:badarg, [{:erlang, :list_to_binary, [[99, 58, 47, 85, 115, 101, 114, 115, 47, 29579, 27874, 47, 65, 112, 112, 68, 97, 116, 97, 47, 82, 111, 97, 109, 105, 110, 103, ...]], []}, {:rabbit_mgmt_external_stats, :"-i/2-lc$^0/1-2-", 1, [file: 'src/rabbit_mgmt_external_stats.erl', line: 282]}, {:rabbit_mgmt_external_stats, :i, 2, [file: 'src/rabbit_mgmt_external_stats.erl', line: 282]}, {:rabbit_mgmt_external_stats, :infos, 3, [file: 'src/rabbit_mgmt_external_stats.erl', line: 232]}, {:rabbit_mgmt_external_stats, :emit_update, 1, [file: 'src/rabbit_mgmt_external_stats.erl', line: 464]}, {:rabbit_mgmt_external_stats, :init, 1, [file: 'src/rabbit_mgmt_external_stats.erl', line: 440]}, {:gen_server, :init_it, 2, [file: 'gen_server.erl', line: 417]}, {:gen_server, :init_it, 6, [file: 'gen_server.erl', line: 385]}]}}}}}, {:rabbit_mgmt_agent_app, :start, [:normal, []]}}}}
    (rabbitmqctl 3.8.0-dev) lib/rabbitmq/cli/plugins/plugins_helpers.ex:210: RabbitMQ.CLI.Plugins.Helpers.update_enabled_plugins/2
    (rabbitmqctl 3.8.0-dev) lib/rabbitmq/cli/plugins/plugins_helpers.ex:107: RabbitMQ.CLI.Plugins.Helpers.update_enabled_plugins/4
    (rabbitmqctl 3.8.0-dev) lib/rabbitmq/cli/plugins/commands/enable_command.ex:121: anonymous fn/6 in RabbitMQ.CLI.Plugins.Commands.EnableCommand.do_run/2
    (elixir 1.10.4) lib/stream.ex:1325: anonymous fn/2 in Stream.iterate/2
    (elixir 1.10.4) lib/stream.ex:1538: Stream.do_unfold/4
    (elixir 1.10.4) lib/stream.ex:1609: Enumerable.Stream.do_each/4
    (elixir 1.10.4) lib/stream.ex:956: Stream.do_enum_transform/7
    (elixir 1.10.4) lib/stream.ex:1609: Enumerable.Stream.do_each/4

{:case_clause, {:could_not_start, :rabbitmq_management_agent, {:rabbitmq_management_agent, {{:shutdown, {:failed_to_start_child, :rabbit_mgmt_agent_sup, {:shutdown, {:failed_to_start_child, :rabbit_mgmt_external_stats, {:badarg, [{:erlang, :list_to_binary, [[99, 58, 47, 85, 115, 101, 114, 115, 47, 29579, 27874, 47, 65, 112, 112, 68, 97, 116, 97, 47, 82, 111, 97, 109, 105, ...]], []}, {:rabbit_mgmt_external_stats, :"-i/2-lc$^0/1-2-", 1, [file: 'src/rabbit_mgmt_external_stats.erl', line: 282]}, {:rabbit_mgmt_external_stats, :i, 2, [file: 'src/rabbit_mgmt_external_stats.erl', line: 282]}, {:rabbit_mgmt_external_stats, :infos, 3, [file: 'src/rabbit_mgmt_external_stats.erl', line: 232]}, {:rabbit_mgmt_external_stats, :emit_update, 1, [file: 'src/rabbit_mgmt_external_stats.erl', line: 464]}, {:rabbit_mgmt_external_stats, :init, 1, [file: 'src/rabbit_mgmt_external_stats.erl', line: 440]}, {:gen_server, :init_it, 2, [file: 'gen_server.erl', line: 417]}, {:gen_server, :init_it, 6, [file: 'gen_server.erl', line: 385]}]}}}}}, {:rabbit_mgmt_agent_app, :start, [:normal, []]}}}}}


D:\Programmer\RabbitMQ Server\rabbitmq_server-3.8.14\sbin>
相关推荐
代码丰10 小时前
使用Spring Cloud Stream 模拟生产者消费者group destination的介绍(整合rabbitMQ)
java·分布式·后端·rabbitmq
麦兜*19 小时前
【为什么RabbitMQ能够控制事务?控制事务的原理】
java·rabbitmq·java-rabbitmq
蜗牛编程之路19 小时前
RabbitMQ的使用--项目创建、五种工作模式、高级特性
数据库·分布式·rabbitmq
元气满满的热码式1 天前
Rabbitmq后台无法登录问题解决
分布式·rabbitmq·ruby
A尘埃1 天前
RabbitMQ可靠和延迟队列
分布式·rabbitmq
查士丁尼·绵1 天前
离线部署openstack 2024.1控制节点基础服务
rabbitmq·openstack·mariadb·memcache·keepalived·haproxy
简诚1 天前
RabbitMQ实现异步消息监听机制
rabbitmq·java-rabbitmq
麦兜*2 天前
RabbitMQ 高可用与可靠性保障实现
分布式·中间件·rabbitmq·java-rocketmq·java-rabbitmq·安全架构
小鸡脚来咯2 天前
RabbitMQ 各类交换机
服务器·网络·rabbitmq
遇见火星3 天前
Kubernetes服务部署——RabbitMQ(集群版)
容器·kubernetes·rabbitmq