RabbitMQ 是一个开源的消息代理和队列服务器,提供可靠的消息传递和队列服务。它支持多种消息协议,包括 AMQP、STOMP、MQTT 等。本文将详细介绍如何在 Windows 系统上安装和使用最新版本的 RabbitMQ 4.0.2。
前言
RabbitMQ 是用 Erlang 语言开发的 AMQP(高级消息队列协议)的开源实现,广泛应用于消息队列、消息中间件等领域。它支持多种消息传递协议和多种客户端库,能够有效处理高并发的消息传递需求。 RabbitMQ 主要实现了 AMQP(高级消息队列协议)1.0 和 0-9-1 版本。然而,RabbitMQ 并不仅仅局限于 AMQP 协议,它还支持多种其他协议和扩展,使其能够适应更广泛的应用场景。
以下是一些 RabbitMQ 支持的协议和扩展:
1. AMQP 0-9-1
标准协议:RabbitMQ 最广泛使用的协议版本是 AMQP 0-9-1。这个版本的协议已经被许多客户端库支持,适用于大多数消息队列应用场景。
2. MQTT (Message Queuing Telemetry Transport)
轻量级协议:MQTT 是一种轻量级的消息协议,特别适合于物联网(IoT)设备和移动设备。RabbitMQ 通过插件支持 MQTT 协议,允许这些设备与 RabbitMQ 服务器进行通信。
3. STOMP (Simple Text Oriented Messaging Protocol)
简单文本协议:STOMP 是一种简单的文本消息协议,适用于多种编程语言和平台。RabbitMQ 通过插件支持 STOMP 协议,使得非 AMQP 客户端也可以与 RabbitMQ 交互。
4. Web Sockets
Web 通信:RabbitMQ 通过插件支持 Web Sockets,允许浏览器直接与 RabbitMQ 服务器进行实时通信。这使得 Web 应用可以实时接收消息。
5. RMQ (RabbitMQ Management HTTP API)
管理接口:RabbitMQ 提供了一个基于 HTTP 的管理 API,允许你通过 HTTP 请求管理 RabbitMQ 服务器,包括创建和删除队列、交换机、用户等操作。
6. MQTT over WebSockets
组合协议:RabbitMQ 支持通过 WebSockets 传输 MQTT 消息,使得 Web 应用可以直接使用 MQTT 协议与 RabbitMQ 通信。
7. AMQP 1.0
最新标准:虽然 AMQP 1.0 是最新的标准版本,但在实际应用中,AMQP 0-9-1 仍然更为常见。RabbitMQ 也支持 AMQP 1.0,但需要启用相应的插件。
erlang环境配置
RabbitMQ 是使用 Erlang 语言编写的,因此需要先安装 Erlang。RabbitMQ 4.0.2 需要 Erlang 26或更高版本。
安装erlang并配置环境变量
bash
ERLANG_HOME 路径:D:\Program Files\Erlang OTP
双击系统变量path,点击"新建",将%ERLANG_HOME%\bin加入到path中。
%ERLANG_HOME%\bin

验证erlang是否安装成功
win+R键,输入cmd,再输入erl,看到erlang版本号就说明erlang安装成功了。
RabbitMQ最新版本下载:https://www.rabbitmq.com/docs/install-windows#installer
安装RabbitMQ
2.1 双击下载后的.exe文件,安装过程与erlang的安装过程相同。
2.2 安装RabbitMQ-Plugins
打开命令行cd,输入RabbitMQ的sbin目录。
然后输入以下命令进行安装
bash
./rabbitmq-plugins enable rabbitmq_management

验证rabbitmq是否安装成功
输入 以下命令:
bash
rabbitmqctl status

从提供的错误信息来看,问题主要集中在 Erlang 分布式通信失败上。具体来说,rabbitmqctl 工具能够连接到 epmd,并且 epmd 报告了正确的端口,但 Erlang 分布式通信未能成功建立。这通常是由于 Erlang Cookie 不匹配或主机名不一致导致的。
解决办法
停止 RabbitMQ 服务(如果已启动)
检查 Erlang Cookie
确保 rabbitmqctl 工具和 RabbitMQ 服务器使用相同的 Erlang Cookie。
Erlang Cookie 文件通常位于:
Linux: /var/lib/rabbitmq/.erlang.cookie
Windows: %APPDATA%\RabbitMQ\.erlang.cookie
打开这两个文件,确保它们的内容完全相同。如果内容不同,请将它们同步。
比较下面两个文件夹下的.erlang.cookie文件内容,后来修改其中一个文件的内容,使两个文件内容一样。再次执行命令rabbitmqctl status,成功
bash
C:\Windows\System32\config\systemprofile\.erlang.cookie
C:\User\{{电脑用户名}}\.erlang.cookie
再次查看服务状态
bash
rabbitmqctl status

打开浏览器,地址栏输入mq访问地址,即可看到管理界面的登陆页
bash
http://127.0.0.1:15672
输入用户名和密码,都为guest 进入主界面:

开启支持stomp协议
RabbitMQ 中启用对 STOMP (Simple Text Oriented Messaging Protocol) 的支持,你需要启用 rabbitmq_stomp 插件。
以下是详细的步骤:
启用 STOMP 插件: 打开命令行,进入 RabbitMQ 的 sbin 目录,然后执行以下命令来启用 STOMP 插件:
bash
rabbitmq-plugins enable rabbitmq_stomp
rabbitmq-plugins enable rabbitmq_web_stomp
配置 STOMP : 你可以通过修改 RabbitMQ 的配置文件来设置 STOMP 连接的相关参数,通常这个文件是 rabbitmq.conf
或 advanced.config
。在其中可以设置 STOMP 监听的端口等。
例如,如果你希望 STOMP 监听默认端口61613,可以在 rabbitmq.conf
中添加:
stomp.port = 61613
重启 RabbitMQ: 修改配置后,需要重启 RabbitMQ 服务以使更改生效。可以使用以下命令:
rabbitmqctl stop
rabbitmq-server start
验证 STOMP 是否启用: 可以通过使用 STOMP 客户端连接到 RabbitMQ 服务器来验证。确保可以在端口 61613 上成功连接。
完成以上步骤后,你的 RabbitMQ 应该已经能够支持 STOMP 协议。
可以使用以下命令验证 rabbitmq_stomp 插件是否已成功启用:
bash
./rabbitmq-plugins list

其他资源
Release RabbitMQ 4.0.2 · rabbitmq/rabbitmq-server · GitHub