rabbitMQ多次创建相同队列,如何保证立即显示最新消息

之前我一直纠结如何做到消费者客户端再次创建队列的时候,不要显示他错过的那些数据。我之前的做法是在客户端断开连接的时候,删除队列,一般情况下是可以满足的,但是有时一些异常的情况会导致手动删除队列的代码没有执行。我到今天才找到真正的解决方案,就是 channel.queueDeclare在声明时有一个参数叫isExclusive,也就是排他性,当设置为true时,客户端关闭后rabbitmq会自动删除队列!

为什么排他性有这个功能呢,我的理解是,排他性的作用就是为了让一个队列仅给一个客户端享用,它的功能除了客户端断开自动删除,还有个功能是不允许创建同名队列。所以客户端都断开了,队列留着也没用,所以rabbitmq就把它删除了。