RabbitMq在声明交换器和队列时,都有一个共同的属性为autoDelete,从字面意思上来说可以理解为自动删除,那么自动删除的前提是什么呢?
抛开代码本身来说,从设计者的角度来思考,一个交换器或者一个队列在什么时候需要被自动删除呢?
当然是该交换器或队列不被需要了,即交换器下曾经绑定过的交换器或队列解除绑定,队列下的消费者解除订阅。
但是,一个交换器如果从来未曾被任何交换器/队列绑定过,一个队列从来未曾被消费者订阅过,这时候能否被自动删除呢?当然不行,因为如果想要删除某段时间内未被绑定或消费的交换器及队列,RabbitMq还有自动过期属性呢,总不能让autoDelete属性把两件事都干了吧。
所以,总结一下,autoDelete属性针对的是曾经有过但后来没有的事物。
RabbitMq中的autoDelete
最新推荐文章于 2024-05-24 08:29:38 发布