RabbitMQ报错: Shutdown Signal: channel error

RabbitMQ报错: Shutdown Signal: channel error的原因及解决方式

导言

最近在项目中使用RabbitMQ时出现 Shutdown Signal: channel error 的报错, 特此记录一下
RabbitMQ版本: 4.0.5
项目环境: Spring Cloud Alibaba 2023.0.1.0
JDK: 17


完整报错如下:

一.问题产生原因
这个问题是由于在项目启动的时候会自动创建队列和交换机以及绑定关系, 但是这里在我的RabbitMQ中已经存在
erp-create-order-pos-queue 这个队列, 但是在我启动项目的时候, 项目中的这个队列的配置与已经存在的队列的配置不一样
二.解决方式
首先需要确定项目中的配置是误修改还是确实需要修改队列配置, 如果误修改直接改回去就好了, 如果是要修改配置, 直接找个合适的时间把原本的队列删除就好了, 重启项目就可以重新新建队列
Spring AMQP的CachingConnectionFactory出现`channel error; protocol method: #method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED)`错误,通常表示访问被拒绝,可能是由于用户权限不足。例如在整合spring boot和RabbitMQ时,若新手第一次使用,vhost的权限未设置,就会遇到此类问题[^2]。以下是一些可能的解决办法: ### 检查用户权限 要保证用于连接RabbitMQ的用户具备访问指定虚拟主机(vhost)和队列的权限。可以通过RabbitMQ的管理界面或者命令行来设置权限。 - **管理界面**:登录RabbitMQ的管理界面(通常是`http://localhost:15672`),在`Admin`标签页下,找到对应的用户,设置其对指定vhost的权限。 - **命令行**:使用以下命令为用户授予对指定vhost的所有权限。 ```bash rabbitmqctl set_permissions -p / username ".*" ".*" ".*" ``` 其中,`/` 是vhost名称,`username` 是连接RabbitMQ的用户名。 ### 检查配置文件 确保Spring Boot配置文件(如`application.properties` 或 `application.yml`)中的连接信息(包括用户名、密码、vhost)准确无误。 - **application.properties** ```properties spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=your_username spring.rabbitmq.password=your_password spring.rabbitmq.virtual-host=/ ``` - **application.yml** ```yaml spring: rabbitmq: host: localhost port: 5672 username: your_username password: your_password virtual-host: / ``` ### 检查队列和交换器 确认要访问的队列和交换器存在,并且用户有操作它们的权限。若队列或交换器不存在,可通过代码或者管理界面创建。例如,使用Spring AMQP的Java代码创建队列: ```java import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RabbitMQConfig { @Bean public Queue myQueue() { return new Queue("myQueue", true); } } ``` ### 重启服务 在完成权限设置和配置修改后,重启RabbitMQ服务和Spring Boot应用程序,让新的配置生效。 ```bash # 重启RabbitMQ服务 sudo systemctl restart rabbitmq-server ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值