RabbitMQ Channel 參數(shù)詳解

1. channel.exchangeDeclare()

參數(shù)

exchange:交換機(jī)名稱

type:

fanout

fanout類型的Exchange路由規(guī)則非常簡(jiǎn)單,它會(huì)把所有發(fā)送到該Exchange的消息路由到所有與它綁定的Queue中

direct

direct類型的Exchange路由規(guī)則也很簡(jiǎn)單脑豹,它會(huì)把消息路由到那些binding key與routing key完全匹配的Queue中落竹。

topic

規(guī)則就是模糊匹配膝蜈,可以通過(guò)通配符滿足一部分規(guī)則就可以傳送熬甫。它的約定是:

routing key為一個(gè)句點(diǎn)號(hào)“. ”分隔的字符串(我們將被句點(diǎn)號(hào)“. ”分隔開(kāi)的每一段獨(dú)立的字符串稱為一個(gè)單詞)粟耻,如“stock.usd.nyse”夕冲、“nyse.vmw”、“quick.orange.rabbit” binding key與routing key一樣也是句點(diǎn)號(hào)“. ”分隔的字符串嘶炭。

binding key中可以存在兩種特殊字符“”與“#”抱慌,用于做模糊匹配,其中“”用于匹配一個(gè)單詞眨猎,“#”用于匹配多個(gè)單詞(可以是零個(gè))

durable:是否開(kāi)啟持久化exchange

autoDelete: 當(dāng)已經(jīng)沒(méi)有消費(fèi)者時(shí)抑进,服務(wù)器是否可以刪除該exchange

arguments: 擴(kuò)展參數(shù)

Exchange.DeclareOk exchangeDeclare(String exchange, String type, boolean durable, boolean autoDelete,
                                       Map<String, Object> arguments) throws IOException;

2. channel.basicQos()

參數(shù)

prefetchSize:消息的大小

prefetchCount:會(huì)告訴RabbitMQ不要同時(shí)給一個(gè)消費(fèi)者推送多于N個(gè)消息,即一旦有N個(gè)消息還沒(méi)有ack睡陪,則該consumer將block掉单匣,直到有消息ack

global:是否將上面設(shè)置應(yīng)用于channel,簡(jiǎn)單點(diǎn)說(shuō)宝穗,就是上面限制是channel級(jí)別的還是consumer級(jí)別

備注:據(jù)說(shuō)prefetchSize 和global這兩項(xiàng)户秤,rabbitmq沒(méi)有實(shí)現(xiàn),暫且不研究

void basicQos(int prefetchSize, int prefetchCount, boolean global) throws IOException;

3. channel.basicPublish()

參數(shù)

exchange:名稱
routingKey:路由鍵逮矛,#匹配0個(gè)或多個(gè)單詞鸡号,*匹配一個(gè)單詞,在topic exchange做消息轉(zhuǎn)發(fā)用

mandatory:為true時(shí)如果exchange根據(jù)自身類型和消息routeKey無(wú)法找到一個(gè)符合條件的queue须鼎,那么會(huì)調(diào)用
basic.return方法將消息返還給生產(chǎn)者鲸伴。為false時(shí)出現(xiàn)上述情形broker會(huì)直接將消息扔掉
 
immediate:為true時(shí)如果exchange在將消息route到queue(s)時(shí)發(fā)現(xiàn)對(duì)應(yīng)的queue上沒(méi)有消費(fèi)者府蔗,那么這條消息不會(huì)放入隊(duì)列中。當(dāng)與消息routeKey關(guān)聯(lián)的所有queue(一個(gè)或多個(gè))都沒(méi)有消費(fèi)者時(shí)汞窗,該消息會(huì)通過(guò)basic.return方法返還給生產(chǎn)者姓赤。

props:需要注意的是BasicProperties.deliveryMode,1:不持久化 2:持久化 這里指的是消息的持久化仲吏,配合channel(durable=true),queue(durable)可以實(shí)現(xiàn)不铆,即使服務(wù)器宕機(jī),消息仍然保留

body:要發(fā)送的信息

void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) throws IOException;

4. channel.basicAck()

參數(shù)

deliveryTag:該消息的index

multiple:是否批量處理.true:將一次性ack所有小于deliveryTag的消息

void basicAck(long deliveryTag, boolean multiple) throws IOException;

5. channel.basicNack()

參數(shù)

deliveryTag:該消息的index

multiple:是否批量.true:將一次性拒絕所有小于deliveryTag的消息

requeue:被拒絕的是否重新入隊(duì)列 注意:如果設(shè)置為true 裹唆,則會(huì)添加在隊(duì)列的末端

void basicNack(long deliveryTag, boolean multiple, boolean requeue) throws IOException;

6. channel.basicConsume()

參數(shù)

queue:隊(duì)列名稱

autoAck:是否自動(dòng)ack誓斥,如果不自動(dòng)ack,需要使用channel.ack许帐、channel.nack劳坑、channel.basicReject 進(jìn)行消息應(yīng)答

callback:回調(diào)函數(shù)

String basicConsume(String queue, boolean autoAck, Consumer callback) throws IOException;

7. chanel.exchangeBind()

參數(shù)

生產(chǎn)者發(fā)送消息到source交換器中,source根據(jù)路由鍵找到與其匹配的另一個(gè)交換器destination成畦,并把消息轉(zhuǎn)發(fā)到destination中距芬,存儲(chǔ)在destination綁定的隊(duì)列queue中

Exchange.BindOk exchangeBind(String destination, String source, String routingKey) throws IOException;

8. channel.queueDeclare()

參數(shù)

queue: 隊(duì)列名稱

durable: 是否持久化, 隊(duì)列的聲明默認(rèn)是存放到內(nèi)存中的,如果rabbitmq重啟會(huì)丟失循帐,如果想重啟之后還存在就要使隊(duì)列持久化框仔,保存到Erlang自帶的Mnesia數(shù)據(jù)庫(kù)中,當(dāng)rabbitmq重啟之后會(huì)讀取該數(shù)據(jù)庫(kù)

exclusive:是否排外的惧浴,有兩個(gè)作用,一:當(dāng)連接關(guān)閉時(shí)connection.close()該隊(duì)列是否會(huì)自動(dòng)刪除奕剃;二:該隊(duì)列是否是私有的private衷旅,如果不是排外的,可以使用兩個(gè)消費(fèi)者都訪問(wèn)同一個(gè)隊(duì)列纵朋,沒(méi)有任何問(wèn)題柿顶,如果是排外的,會(huì)對(duì)當(dāng)前隊(duì)列加鎖操软,其他通道channel是不能訪問(wèn)的嘁锯,如果強(qiáng)制訪問(wèn)會(huì)報(bào)異常,一般等于true的話用于一個(gè)隊(duì)列只能有一個(gè)消費(fèi)者來(lái)消費(fèi)的場(chǎng)景

autodelete:當(dāng)沒(méi)有任何消費(fèi)者使用時(shí)聂薪,自動(dòng)刪除該隊(duì)列

arguments:擴(kuò)展參數(shù)家乘。如:x-message-ttl

Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,
                                 Map<String, Object> arguments) throws IOException;

9. channel.queueBind()

參數(shù)

queue 隊(duì)列名稱

exchange 交換機(jī)名稱

routingKey 路由key

AMQP.Queue.BindOk queueBind(String queue , String exchange , String routingKey ) throws IOException;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市藏澳,隨后出現(xiàn)的幾起案子仁锯,更是在濱河造成了極大的恐慌,老刑警劉巖翔悠,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件业崖,死亡現(xiàn)場(chǎng)離奇詭異野芒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)双炕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)狞悲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人妇斤,你說(shuō)我怎么就攤上這事摇锋。” “怎么了趟济?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵乱投,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我顷编,道長(zhǎng)戚炫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任媳纬,我火速辦了婚禮双肤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钮惠。我一直安慰自己茅糜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布素挽。 她就那樣靜靜地躺著蔑赘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪预明。 梳的紋絲不亂的頭發(fā)上缩赛,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音撰糠,去河邊找鬼酥馍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛阅酪,可吹牛的內(nèi)容都是我干的旨袒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼术辐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼砚尽!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起辉词,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尉辑,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后较屿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體隧魄,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卓练,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了购啄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片襟企。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狮含,靈堂內(nèi)的尸體忽然破棺而出顽悼,到底是詐尸還是另有隱情,我是刑警寧澤几迄,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布蔚龙,位于F島的核電站,受9級(jí)特大地震影響映胁,放射性物質(zhì)發(fā)生泄漏木羹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一解孙、第九天 我趴在偏房一處隱蔽的房頂上張望坑填。 院中可真熱鬧,春花似錦弛姜、人聲如沸脐瑰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)苍在。三九已至,卻和暖如春荠商,著一層夾襖步出監(jiān)牢的瞬間寂恬,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工结啼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掠剑,地道東北人屈芜。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓郊愧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親井佑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子属铁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353