RabbitMQ队列和交换机的相关知识点

1、关于交换机和队列的autodelete属性

交换机的autodelete属性作用:当属性值设置为true,那么当所有的队列断开于交换机的绑定,那么交换机会自动删除

队列的autodelete属性作用:自动删除队列和普通队列在使用上没有什么区别,唯一的区别是,当所有的相关消费者断开连接时,队列将会被删除


2、关于队列的exclusive属性

排它队列,意味着队列只能被一个消费者使用

 

3、自动过期队列 x-expires属性

没有消费者在消费队列,会被从RabbitMQ中被删除。就算此时有消息进入队列,也会被删除。

 

4、队列消息自动过期

就是为每个队列设置消息的超时时间。只要给队列设置x-message-ttl 参数,就设定了该队列所有消息的存活时间,时间单位是毫秒。如果声明队列时指定了死信交换器,则过期消息会成为死信消息

 

5、永久队列

持久化队列和非持久化队列的区别是,持久化队列会被保存在磁盘中,固定并持久的存储,当Rabbit服务重启后,该队列会保持原来的状态在RabbitMQ中被管理,而非持久化队列不会被保存在磁盘中,Rabbit服务重启后队列就会消失。可以将交换机和队列的autodelete设置为false,且durable设置为true

注意:调用channel的BasicPublish将IBasicProperties属性中的DeliveryMode设置为持久化(2),并设置mandatory设为true,并监听BasicReturn事件,防止发送端丢失消息的情况,

这样能保证消息持久化和队列持久化同时发生作用,且交换机也需要设置持久化,防止发送方的Producer无法发送消息.且同时设置队列和交换机的autodelete为false,防止交换机和队列被意外删除的情况出现.

需要注意的时交换机的持久化不会影响队列的持久化

队列参数列表

 

posted @ 2023-04-19 14:44  郑小超  阅读(173)  评论(0编辑  收藏  举报