全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-22 8 分钟 ✍️ juanwangdev

Erlang 依赖说明

RabbitMQ 使用 Erlang 语言编写,运行时需要 Erlang/OTP 环境支持。版本兼容性是部署前必须检查的关键点。

为什么依赖 Erlang

Erlang/OTP(Open Telecom Platform)是面向高并发、高可用系统的编程语言与运行时环境:

  • 轻量级进程:Erlang 进程极轻(约 300 字节),单节点可承载百万级并发
  • 消息传递:天然支持进程间异步消息通信,与消息队列模型高度契合
  • 热更新:支持不停机更新代码,保证服务连续性
  • 容错机制:Supervisor 树自动监控子进程故障并重启

版本兼容要求

RabbitMQ 与 Erlang 版本必须严格匹配,不兼容会导致启动失败。

RabbitMQ 版本最低 Erlang 版本最高 Erlang 版本
3.13.x25.326.x
3.12.x25.026.x
3.11.x24.225.x
3.10.x24.025.x

版本不匹配时 RabbitMQ 将拒绝启动,报错:{"init terminating in do_boot",{undef,[{rabbit,start,[],[]}]}}

检查当前版本

查看 Erlang 版本:

Bash
erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell

查看 RabbitMQ 版本:

Bash
rabbitmqctl status | grep rabbit

Java 客户端连接示例

Java 客户端不依赖 Erlang,通过 AMQP 协议与 RabbitMQ 通信:

Maven 依赖:

XML
<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.20.0</version>
</dependency>

验证连接:

Java
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class ErlangCheckConnection {
    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        factory.setPort(5672);
        factory.setUsername("guest");
        factory.setPassword("guest");

        try (Connection connection = factory.newConnection()) {
            System.out.println("连接成功,RabbitMQ 运行正常");
            System.out.println("服务器地址: " + connection.getAddress());
        } catch (Exception e) {
            System.err.println("连接失败,请检查 RabbitMQ 与 Erlang 版本兼容性");
            e.printStackTrace();
        }
    }
}

安装建议

使用包管理器安装(推荐):

Bash
# Ubuntu/Debian
sudo apt install erlang rabbitmq-server

# CentOS/RHEL
sudo yum install erlang rabbitmq-server

使用 Docker(免去版本烦恼):

Bash
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 \
  rabbitmq:3.13-management

Docker 镜像已内置匹配版本的 Erlang,无需手动处理兼容问题。

生产环境建议使用官方推荐的版本组合,参考 https://www.rabbitmq.com/which-erlang.html

注意事项

Erlang 版本高于 RabbitMQ 支持范围不会导致崩溃,但可能触发未测试的兼容性问题。

RabbitMQ 插件(如 Management、Shovel)同样受 Erlang 版本限制。

升级 RabbitMQ 前必须先确认新版本的 Erlang 兼容范围。

要点总结

  • RabbitMQ 基于 Erlang/OTP 运行时,版本必须严格匹配
  • 官方提供兼容性矩阵,部署前需核对 RabbitMQ 与 Erlang 版本
  • 版本不匹配时 RabbitMQ 拒绝启动,无法正常工作
  • 推荐使用 Docker 部署,镜像内置匹配的 Erlang 环境
  • Java 客户端通过 AMQP 协议通信,不受 Erlang 版本影响

📝 发现内容有误?点击此处直接编辑

← 上一篇 Docker 快速部署
下一篇 → RabbitMQ 架构概述
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库