Spring运行程序RabbitMQ并没有自动创建队列的问题解决

几天前遇到了一个问题,如标题所说,自己代码@使用RabbitListener绑定一个交换机,但是代码运行后交换机按照配置项创建了出来,但是队列却无法创建成功,也就绑定失败了。

运行后就会抛出异常:

总体来说就是无法创建队列,这时检查我们的交换机已经创建出来了,那么这是我为什么呢?

解决方法:

这是因为我的代码

复制代码
@QueueBinding(
    value = @Queue(name = "custom_edit_user_queue"), 
    exchange = @Exchange(value = RabbitConfig.EXCHANGE_NAME, type = ExchangeTypes.FANOUT))

当我们使用@Exchange,如果我们不指定autoDelete属性他就是默认autoDelete = false,但是我所设计的交换机autoDelete=true。所以导致程序在检验绑定的交换机时,发现我所创建的交换机与我要绑定的交换机所声明的属性有所不同。我们直接显式的确定绑定交换机的autoDelete属性为true即可,如下代码。不然就会抛出如上异常。

相关推荐
karry_k3 分钟前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
karry_k10 分钟前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端
SamDeepThinking4 小时前
从源码到代码:MyBatis-Flex 与 MyBatis-Plus 的逐项对比
java·后端·程序员
她的男孩7 小时前
Spring Boot 接 Flowable 工作流:用 3 个注解搭一个请假审批流程
java·后端·架构
荣码8 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
plainGeekDev10 小时前
Gson → kotlinx.serialization
android·java·kotlin
小bo波18 小时前
Java Swing 图形用户界面实验 —— 从算术练习到游戏开发的完整实践
java·课程设计·gui·游戏开发·扫雷·swing
咖啡八杯20 小时前
GoF设计模式——备忘录模式
java·后端·spring·设计模式