【深入理解RabbitMQ】RabbitMQ exclusive和mandatory的理解

                             RabbitMQ exclusive和mandatory的理解

 

exclusive 排他性

队列的排他性的理解,是针对首次建立连接的,一个连接下面多个通道也是可见的, 对于其他连接是不可见的

设置队列是否排他,为true时,则设置队列排他,改队列对首次声明他的队列连接可见。

排他队列是基于连接可见的,同一个连接的不同信道是可以同时访问同一连接创建的。

RabbitMQ会自动删除这个队列,而不管这个队列是否被声明成持久性的(Durable =true)。 也就是说即使客户端程序将一个排他性的队列声明成了Durable的,只要调用了连接的Close方法或者客户端程序退出了,RabbitMQ都会删除这个队列。注意这里是连接断开的时候,而不是通道断开。这个其实前一点保持一致,只区别连接而非通道。

 <!-- 排他性,exclusive=true:首次申明的connection连接下可见; exclusive=false:所有connection连接下都可见 -->
    <rabbit:queue id="Producer_MyMessage_Consumer" durable="true" auto-delete="false" exclusive="true" name="Producer_MyMessage_Consumer" />

现象

新建一个队列,配置如上,durable=true exclusive= true 

发送了一个消息上去

断开客户端连接 ,发现队列删除了

Mandatory

当mandatory参数设为true时,交换器无法根据自身的类型和路由键找到一个符合条件的队列,那么RabbitMQ会调用Basic.Return命令将消息返回给生产者。当mandatory参数设置为false时,出现上述情形,则消息直接被丢弃。

现象

设置成true时

 

 

设置成false

 

 

 

 

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值