欧拉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]# 
相关推荐
Yuer202511 小时前
用 Rust 做分布式查询引擎之前,我先写了一个最小执行 POC
开发语言·分布式·rust
张彦峰ZYF13 小时前
高并发场景下的缓存雪崩探析与应对策略
redis·分布式·缓存
张彦峰ZYF16 小时前
高并发场景下的缓存穿透问题探析与应对策略
redis·分布式
TT哇17 小时前
【RabbitMQ】@Autowired private RabbitTemplate rabbitTemplate;
java·分布式·rabbitmq
Rainly200017 小时前
工作日志之postgresql实现分布式锁
数据库·分布式·postgresql
ha_lydms18 小时前
3、Spark 函数_d/e/f/j/h/i/j/k/l
大数据·分布式·spark·函数·数据处理·dataworks·maxcompute
张彦峰ZYF18 小时前
优化分布式系统性能:热key识别与实战解决方案
redis·分布式·性能优化
张彦峰ZYF18 小时前
高并发场景下的大 Key 问题及应对策略
redis·分布式·缓存
张彦峰ZYF18 小时前
高并发场景下的缓存击穿问题探析与应对策略
redis·分布式·缓存
AC赳赳老秦21 小时前
企业级人工智能平台选型深度分析:天翼云 DeepSeek 与开源解决方案的部署考量与成本博弈
人工智能·elasticsearch·zookeeper·rabbitmq·github·时序数据库·deepseek