springboot rabbitmq 找不到队列
错误报告:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[chatMessage] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java: 721 ) ~[spring-rabbit- 1.7 . 9 .RELEASE.jar:na] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java: 598 ) ~[spring-rabbit- 1.7 . 9 .RELEASE.jar:na] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java: 1504 ) [spring-rabbit- 1.7 . 9 .RELEASE.jar:na] at java.lang.Thread.run(Thread.java: 748 ) [na: 1.8 .0_131] Caused by: java.io.IOException: null at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java: 105 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java: 101 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java: 123 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java: 992 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java: 50 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na: 1.8 .0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62 ) ~[na: 1.8 .0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 ) ~[na: 1.8 .0_131] at java.lang.reflect.Method.invoke(Method.java: 498 ) ~[na: 1.8 .0_131] at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java: 1027 ) ~[spring-rabbit- 1.7 . 9 .RELEASE.jar:na] at com.sun.proxy.$Proxy261.queueDeclarePassive(Unknown Source) ~[na:na] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java: 700 ) ~[spring-rabbit- 1.7 . 9 .RELEASE.jar:na] ... 3 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code= 404 , reply-text=NOT_FOUND - no queue 'chatMessage' in vhost '/' , class -id= 50 , method-id= 10 ) at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java: 66 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java: 32 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java: 366 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java: 229 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java: 117 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] ... 12 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code= 404 , reply-text=NOT_FOUND - no queue 'chatMessage' in vhost '/' , class -id= 50 , method-id= 10 ) at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java: 505 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java: 336 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java: 143 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java: 90 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java: 634 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQConnection.access$ 300 (AMQConnection.java: 47 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java: 572 ) ~[amqp-client- 4.0 . 3 .jar: 4.0 . 3 ] ... 1 common frames omitted |
错误原因:找不到对应的队列,我这里是chatMessage队列找不到,因为当前应用主要收消息,因此并没有在@Configuration文件中配置该chatMessage队列,
所以会造成如何rabbitmq里面有该chatMessage队列则启动不出错,如果没有启动就出错了,在分布式系统中容易忽略这个问题导致潜在错误的出现
解决方案:在rabbitmq的java配置类里面声明该队列即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | @Configuration public class RabbitMQConfig { //direct模式,直接根据队列名称投递消息 @Bean public Queue logOpQueue(){ return new Queue( "oplog" ); } @Bean public Queue logErrQueue(){ return new Queue( "errlog" ); } //不要偷懒 一定要声明 @Bean public Queue chatMessageQueue(){ return new Queue( "chatMessage" ); } } |
分类:
Spring Boot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)