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裏面以及有對應的交換機和隊列存在了就不用這樣做了。