Bootstrap

channel error;protocol method:#method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue

使用RabbitMQ时,启动微服务时提示没有某个队列

这个问题是由于先启动消费者微服务导致的,具体来说

  1. 消费者要监听的队列是在生产者微服务中定义的,生产者启动时会做两件事情
    1. 在visual host中创建指定队列(如果队列不存在)
    2. 把队列的Bean注册到Spring容器中
  2.  如果没有先启动生产者微服务,而是先启动消费者微服务,消费者微服务在启动时会到指定的visual host中查找自己要监听的队列是否存在,如果发现不存在,就会报错

如果你学习过数据结构,就可以像我这样把消息的传递顺序画成一张图,然后按照类似拓扑排序的顺序,依次启动入度为0的微服务,并删除对应的节点和边,如果出现环形,就到rabbitMQ的控制台中手动把环形链路中任意一个微服务监听的队列创建出来,以此来“打破环路”,然后继续依次启动入度为0的微服务

;