RabbitMQ 声明Queue时的参数

在声明队列的时候会有很多的参数

public static QueueDeclareOk QueueDeclare(this IModel model, string queue = “”, bool durable = false, bool exclusive = true, bool autoDelete = true, IDictionary<string, object> arguments = null);
queue:这没什么好说的,队列名

durable:是否持久化,那么问题来了,这是什么意思?持久化,指的是队列持久化到数据库中。在之前的博文中也说过,如果RabbitMQ服务挂了怎么办,队列丢失了自然是不希望发生的。持久化设置为true的话,即使服务崩溃也不会丢失队列

exclusive:是否排外,what? 这又是什么呢。设置了排外为true的队列只可以在本次的连接中被访问,也就是说在当前连接创建多少个channel访问都没有关系,但是如果是一个新的连接来访问,对不起,不可以,下面是我尝试访问了一个排外的queue报的错。还有一个需要说一下的是,排外的queue在当前连接被断开的时候会自动消失(清除)无论是否设置了持久化

autoDelete:这个就很简单了,是否自动删除。也就是说queue会清理自己。但是是在最后一个connection断开的时候

arguments:这个值得拿出来单讲一次,暂时不说

不同方式的生明queue
在queuedeclare的时候会发现还有很多这样的方法,下面图中就可以看到,不要以为其它两个都是吃瓜群众,它们也是有着其特殊功效的

QueueDeclareNoWait:相当于一个async版的声明队列,可以看到是没有返回的。调完方法就结束。也不等队列创建结果

QueueDeclarePassive:消极的声明创建?这是什么鬼,事实上它没有去声明队列,所谓消极,去看看有没有名为xxx的queue,如果有我就把名字什么的信息告诉你,没有就直接报错也不管。那么问题来了,这个方法如此鸡肋,我要它有何用? 。。。其实你可以用来确认queue是否存在嘛

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值