欧拉22.03系统安装RabbitMQ-3.6.10

一、下载,欧拉系统是对应centos8的版本,包名带el8:

(RabbitMQ的安装需要首先安装Erlang,因为它是基于Erlang的VM运行的。)

https://github.com/rabbitmq/erlang-rpm/releases/download/v24.3.4/erlang-24.3.4-1.el8.x86_64.rpm

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.10.7/rabbitmq-server-3.10.7-1.el8.noarch.rpm

上传到文件夹,我的放到如下文件夹:

bash 复制代码
mkdir /data/rabbit
cd /data/rabbit

二、安装

1、安装编译 Erlang 所需的开发工具和库:

bash 复制代码
sudo yum install -y make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel autoconf tar

2、安装 Erlang

bash 复制代码
cd /data/rabbit
rpm -ivh erlang-24.3.4-1.el8.x86_64.rpm

安装完成后,查询版本验证

bash 复制代码
erl -version

3、安装rabbitmq

bash 复制代码
yum -y install rabbitmq-server-3.10.7-1.el8.noarch.rpm

4、启动/关闭 RabbitMQ 服务

4.1、启动 RabbitMQ 服务

bash 复制代码
systemctl start rabbitmq-server #或 rabbitmq-server -detached

4.2、查看 RabbitMQ 状态

验证安装成功,服务正常启动

#查看状态,如下图,则 RabbitMQ 服务已启动

bash 复制代码
systemctl status rabbitmq-server #或 rabbitctl status

#RabbitMQ 默认占用 5672 端口,如果启用了 WEB 管理界面插件,还将占用 15672 端口

bash 复制代码
lsof -i:5672 

#查看指定端口是否被占用,看到如下图结果,5672 端口已被占用

4.4、停止 RabbitMQ 服务

bash 复制代码
systemctl stop rabbitmq-server #或 rabbitmqctl stop

5、启用 rabbitmq_management 插件

要使用 WEB 界面管理 RabbitMQ 需要启用 rabbitmq_management 插件,只需启动一次,下次启动 RabbitMQ 就会自动启动插件。

#查看 15672 端口是否被 RabbitMQ 占用

bash 复制代码
 lsof -i:15672

#激活插件

bash 复制代码
rabbitmq-plugins enable rabbitmq_management

#激活成功后,再次查看 15672 端口,如下图,发现被 RabbitMQ 监听

5.1、浏览器访问

访问 URL: http://主机IP:15672,发现需要登录。

查看用户列表:

bash 复制代码
rabbitmqctl list_users

RabbitMQ 安装完成后会有一个内置用户 guest,低版本的 RabbitMQ 可以直接使用此用户登录,但高版本不可以,需要自己创建用户,并授予权限。

5.2、创建用户

#例如:xxc 为用户名,xxc@123 为密码

bash 复制代码
rabbitmqctl add_user xxc  xxc@123

执行完毕看到如下提示:

Adding user "xxc" ...

Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.

赋予用户权限,有哪几种权限?

#administrator 为最高权限

bash 复制代码
rabbitmqctl set_user_tags xxc administrator

这时候就可以登录了,输入用户名密码,点击 login 看到如下界面,可以使用它来方便的管理 RabbitMQ

三、java服务端连接rabbitmq,报错及解决方案

配置连接信息:

bash 复制代码
spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: xxc
    password: xxc@123
    virtual-host: /

java控制台报错1:

2025-11-13 10:32:29.548 INFO [org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#3-60]o.s.amqp.rabbit.connection.CachingConnectionFactory.connectAddresses:636 -Attempting to connect to: [10.23.190.12:5672]

2025-11-13 10:32:29.553 WARN [AMQP Connection 10.23.190.12:5672]com.rabbitmq.client.impl.ForgivingExceptionHandler.log:115 -An unexpected connection driver error occured (Exception message: Socket closed)

查看rabbitmq报错日志:

bash 复制代码
[root@service12 nft]# cd /var/log/rabbitmq/
[root@service12 rabbitmq]# tail -f rabbit@service12.log 

关键报错:

error\] \<0.6246.0\> access to vhost '/' refused for user 'xxc' 从日志可以看到: 用户 'xxc' 尝试连接虚拟主机 '/' RabbitMQ 拒绝访问:access to vhost '/' refused for user 'xxc' 连接被关闭 **解决方案:检查并修复用户权限:** ```bash # 1. 列出所有用户,确认用户是否存在 rabbitmqctl list_users # 2. 列出所有虚拟主机 rabbitmqctl list_vhosts # 3. 列出用户当前的权限 rabbitmqctl list_user_permissions xxc # 4. 为用户 xxc 授予对虚拟主机 '/' 的权限 rabbitmqctl set_permissions -p / xxc ".*" ".*" ".*" # 5. 验证权限设置 rabbitmqctl list_user_permissions xxc ``` #### 报错2: o.s.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations:726 -Failed to declare queue: reBindAddress org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):\[reBindAddress

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'reBindAddress' in vhost '/', class-id=50, method-id=10)

从错误信息可以看到:

✅ 连接成功:Created new connection

❌ 队列声明失败:Failed to declare queue: reBindAddress

错误原因:NOT_FOUND - no queue 'reBindAddress' in vhost '/'

解决方案:在 RabbitMQ 中创建缺失的队列

bash 复制代码
# 使用 curl 通过管理 API 创建队列
curl -u xxc:xxc@123 -X PUT http://127.0.0.1:15672/api/queues/%2F/reBindAddress \
  -H "Content-Type: application/json" \
  -d '{"durable":true, "auto_delete":false, "arguments":{}}'

查看队列已存在:

bash 复制代码
[root@service12 nft]# rabbitmqctl list_queues | grep reBindAddress
reBindAddress	0
[root@service12 nft]# 
相关推荐
用户8307196840821 天前
RabbitMQ vs RocketMQ 事务大对决:一个在“裸奔”,一个在“开挂”?
后端·rabbitmq·rocketmq
初次攀爬者2 天前
RabbitMQ的消息模式和高级特性
后端·消息队列·rabbitmq
初次攀爬者4 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
让我上个超影吧5 天前
消息队列——RabbitMQ(高级)
java·rabbitmq
塔中妖5 天前
Windows 安装 RabbitMQ 详细教程(含 Erlang 环境配置)
windows·rabbitmq·erlang
断手当码农5 天前
Redis 实现分布式锁的三种方式
数据库·redis·分布式
初次攀爬者5 天前
Redis分布式锁实现的三种方式-基于setnx,lua脚本和Redisson
redis·分布式·后端
业精于勤_荒于稀5 天前
物流订单系统99.99%可用性全链路容灾体系落地操作手册
分布式
Ronin3055 天前
信道管理模块和异步线程模块
开发语言·c++·rabbitmq·异步线程·信道管理
Asher05095 天前
Hadoop核心技术与实战指南
大数据·hadoop·分布式