org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[topic.man] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:700) [spring-rabbit-2.2.7.RELEASE.jar:2.2.7.RELEASE]
at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.passiveDeclarations(BlockingQueueConsumer.java:584) [spring-rabbit-2.2.7.RELEASE.jar:2.2.7.RELEASE]
在代码无误的情况下,生产者模块可以启动,而消费者模块启动报上述错误,原因是此时还未发起网址请求,如此就不会在rabbitmq服务器里面创建还不存在的交换机和队列。这个到rabbitmq上一看就知道了。
解决办法是先启动生产者模块,再发起访问url(该操作会让rabbitmq服务器上创建对应的交换机和队列),最后再启动消费者模块。
第一步:开启生产者模块
第二步: 发起对应的url访问
保险起见,去rabbitmq网页看看对应的交换机和队列创建没有
可见此时都已自动生成。
第三步:开启消费者模块
如此一来,该问题就解决了,但是这个操作仅限于第一次启动的时候,下次rabbitmq里面以及有对应的交换机和队列存在了就不用这样做了。