在 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>
相关推荐
m0_748236119 小时前
【Rabbitmq篇】高级特性----事务,消息分发
分布式·rabbitmq
pingzhuyan10 小时前
微服务: 06-rabbitmq设置延时队列,场景与使用(springboot)
微服务·rabbitmq·java-rabbitmq
vvw&14 小时前
如何在 Ubuntu 22.04 上安装并开始使用 RabbitMQ
java·linux·运维·服务器·spring·ubuntu·rabbitmq
JavaLearnerZGQ15 小时前
Docker安装和使用RabbitMQ
docker·容器·rabbitmq
Allen Bright15 小时前
RabbitMQ中的异步Confirm模式:提升消息可靠性的利器
分布式·rabbitmq
小陈far1 天前
RabbitMQ
分布式·rabbitmq
员宇宙1 天前
【RabbitMQ的死信队列】
分布式·rabbitmq·ruby
winks31 天前
使用RabbitMQ
java·rabbitmq·java-rabbitmq
Allen Bright1 天前
RabbitMQ中的批量Confirm模式:提升消息可靠性与性能
分布式·rabbitmq
P7进阶路2 天前
Spring Boot 中 RabbitMQ 的使用
spring boot·rabbitmq·java-rabbitmq