durable:
队列和消息都可以声明持久化属性
队列持久化属性为durable(其属性值为false代表不持久化,属性值为true代表持久化)
消息持久化属性为deliveryMode(其属性值为1代表不持久化,属性值为2代表持久化)
在说明durable之前,需要指出的是:
1 RabbitMq实例以broker表示,当broker重启时,所有未申明durable的交换器和队列都会被删除。
2 RabbitMq中消息都被保存在队列中,所以如果队列都删除了,消息不管有没有设置deliveryMode=2都不管用了。
综上所述,
1 交换器未声明durable属性不会影响队列的持久化(但是发送方的producer会被影响,无法正常发送消息)
2 只声明队列持久化,重启之后消息会丢失
3 只声明消息的持久化,重启之后消息随队列一起丢失
所以想要保证消息和队列都在重启后存在,需要同时设置队列持久化和消息持久化
exclusive:
创建一个只有自己可见的队列,即不允许其它用户访问,RabbitMQ允许你将一个Queue声明成为排他性的
true:排他 false:不排他
特点:
1.声明了exclusive属性的队列只对首次声明它的连接可见,并且在连接断开时自动删除
2.针对连接可见,只要是当前connection下的信道都可以访问
3.一旦该队列被声明,其他连接无法声明相同名称的排他队列,其他连接的通道也无法绑定此队列
4.队列即使显示声明为durable,连接断开时(注意不是信道断开)也会被自动删除
authDelete:
当所有接收该queue的消费端都断开连接后, 是否自动删除队列
true:删除 false:不删除