1. 下载安装 Erlang
RabbitMQ
的安装依赖于Erlang
,所以需要先安装对应版本的64
位Erlang
。参见 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.3
和RabbitMQ 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>