RabbitMQ 声明Queue时的参数们的Power
RabbitMQ 聲明Queue時的參數(shù)們的Power
參數(shù)們的Power
在聲明隊(duì)列的時候會有很多的參數(shù)
public static QueueDeclareOk QueueDeclare(this IModel model, string queue = "", bool durable = false, bool exclusive = true, bool autoDelete = true, IDictionary<string, object> arguments = null);queue:這沒什么好說的,隊(duì)列名
durable:是否持久化,那么問題來了,這是什么意思?持久化,指的是隊(duì)列持久化到數(shù)據(jù)庫中。在之前的博文中也說過,如果RabbitMQ服務(wù)掛了怎么辦,隊(duì)列丟失了自然是不希望發(fā)生的。持久化設(shè)置為true的話,即使服務(wù)崩潰也不會丟失隊(duì)列
exclusive:是否排外,what? 這又是什么呢。設(shè)置了排外為true的隊(duì)列只可以在本次的連接中被訪問,也就是說在當(dāng)前連接創(chuàng)建多少個channel訪問都沒有關(guān)系,但是如果是一個新的連接來訪問,對不起,不可以,下面是我嘗試訪問了一個排外的queue報的錯。還有一個需要說一下的是,排外的queue在當(dāng)前連接被斷開的時候會自動消失(清除)無論是否設(shè)置了持久化
autoDelete:這個就很簡單了,是否自動刪除。也就是說queue會清理自己。但是是在最后一個connection斷開的時候
arguments:這個值得拿出來單講一次,暫時不說
?
不同方式的生明queue
在queuedeclare的時候會發(fā)現(xiàn)還有很多這樣的方法,下面圖中就可以看到,不要以為其它兩個都是吃瓜群眾,它們也是有著其特殊功效的。
?
QueueDeclareNoWait:相當(dāng)于一個async版的聲明隊(duì)列,可以看到是沒有返回的。調(diào)完方法就結(jié)束。也不等隊(duì)列創(chuàng)建結(jié)果
QueueDeclarePassive:消極的聲明創(chuàng)建?這是什么鬼,事實(shí)上它沒有去聲明隊(duì)列,所謂消極,去看看有沒有名為xxx的queue,如果有我就把名字什么的信息告訴你,沒有就直接報錯也不管。那么問題來了,這個方法如此雞肋,我要它有何用? 。。。其實(shí)你可以用來確認(rèn)queue是否存在嘛
轉(zhuǎn)載于:https://www.cnblogs.com/zxtceq/p/7567390.html
總結(jié)
以上是生活随笔為你收集整理的RabbitMQ 声明Queue时的参数们的Power的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《JAVA疯狂讲义》学习笔记第六天
- 下一篇: HALCON示例程序resistor.h