RabbitMQ中声明交换器,队列时的,autoDelete=true自动删除的条件

时间:2023-03-09 02:48:44
RabbitMQ中声明交换器,队列时的,autoDelete=true自动删除的条件

  在声明交换器和队列时,有一个属性叫autoDelete,表示是否自动删除。

如果autoDelete=true,表示自动删除。此处我们要理解,自动删除的条件是什么?

这里的关键是,自动删除的条件是向后的。

  RabbitMQ的整个消息流是,生产端发布消息和routingKey,经由交换器,依据routingKey,到达指定队列。队列推送消息到已经订阅此消息的消费者。

   再来解释"自动删除的条件是向后的"这句话。

  对于exchange交换器,向前是生产端发布的消息和routingKey,这不能作为exchange自动删除的条件。exchange向后是绑定另一个交换器,或者绑定队列。这就是exchange交换器删除的条件。总结:exchange自动删除的条件,有队列或者交换器绑定了本交换器,然后所有队列或交换器都与本交换器解除绑定,autoDelete=true时,此交换器就会被自动删除。

  对于队列,向前是与exchange的绑定关系,这不能作为队列自动删除的条件。队列向后是被消费者订阅。这就是队列删除的条件。总结:队列自动删除的条件,有消息者订阅本队列,然后所有消费者都解除订阅此队列,autoDelete=true时,此队列会自动删除,即使此队列中还有消息。