iOS RMQClient(RabbitMQ)第二章---廣播模式接收多個(gè)消息

前幾天忙別的事尚卫,沒(méi)時(shí)間寫(xiě)企孩,現(xiàn)在補(bǔ)上。
在上一章中,我們集成了RMQClient按傅,并進(jìn)行了一些基礎(chǔ)操作,這一章來(lái)講講廣播模式接收多個(gè)消息茂蚓。
有一種場(chǎng)景是胸懈,我發(fā)出一條消息,需要多個(gè)人收到雏赦,但我并不在乎是哪一些人收到劫笙。例如老板說(shuō),今天不用上班星岗,那全公司的人就都收到了填大。
了解了基礎(chǔ)需求后,我們開(kāi)始干活兒俏橘。

一允华、接收方法

- (void)receive
{
    RMQConnection * connection = [[RMQConnection alloc] initWithDelegate:[RMQConnectionDelegateLogger new]];
    [connection start];
    id<RMQChannel> channel = [connection createChannel];
    //options 為聲明屬性,斷開(kāi)連接后自動(dòng)刪除
    RMQQueue * queue = [channel queue:@"" options:RMQQueueDeclareAutoDelete];
    RMQExchange * exchange = [channel fanout:self.exTF.text options:RMQExchangeDeclareAutoDelete];
    [queue bind:exchange];
    [queue subscribe:^(RMQMessage * _Nonnull message) {
        NSLog(@"<二>收到消息:%@",[[NSString alloc] initWithData:message.body encoding:NSUTF8StringEncoding]);
    }];
}

說(shuō)明:

  1. [channel fanout:self.exTF.text options:RMQExchangeDeclareAutoDelete] 這行代碼的意思是將通道與交換機(jī)使用self.exTF.text字段進(jìn)行廣播匹配,且在斷開(kāi)時(shí)自動(dòng)刪除該交換機(jī)靴寂。
    在RabbitMQ中有4種匹配方式磷蜀,分別是direct(完全匹配)fanout(廣播匹配)百炬,topic(主題匹配)褐隆,header(標(biāo)題匹配)
    1.1 廣播匹配剖踊,fanout
    這種匹配方式庶弃,不需要考慮路由鍵(routingKey),它類似網(wǎng)絡(luò)中的廣播模式德澈,將消息發(fā)送到所有與該exchange綁定的隊(duì)列上歇攻,比如你在一個(gè)exchange上綁定了3個(gè)隊(duì)列,分別是q1圃验,q2掉伏,q3,你將一條消息發(fā)送給q1澳窑,那么q2和q3也將會(huì)收到斧散。
    這種匹配方式必須先綁定一個(gè)隊(duì)列,如果你向一個(gè)沒(méi)有綁定的隊(duì)列發(fā)送了消息摊聋,那么這條消息將會(huì)被丟棄
    1.2 完全匹配鸡捐,direct
    這種匹配方式需要考慮路由鍵(routingKey),它需要將一個(gè)隊(duì)列綁定到交換機(jī)上麻裁,要求該消息與隊(duì)列的一個(gè)routingKey完全匹配箍镜。如果一個(gè)隊(duì)列接收到消息的時(shí)候,只有匹配了該routingKey的隊(duì)列才會(huì)收到消息煎源。比如色迂,一個(gè)隊(duì)列綁定到該交換機(jī)上,要求routingKey為"banana",那么則只有routingKey為banana的隊(duì)列才能收到消息手销,既不會(huì)轉(zhuǎn)發(fā)到banana.abc也不會(huì)轉(zhuǎn)發(fā)到banana.abc.edf歇僧,也不會(huì)轉(zhuǎn)發(fā)到apple上。
    1.3 主題匹配锋拖,topic
    這是一種按照通配符匹配的方式诈悍,它不能隨意指定routingKey,它的格式為abc.或者abc.#樣式的字符串兽埃,且長(zhǎng)度不能超過(guò)255個(gè)字節(jié)侥钳,代表匹配一個(gè)單詞,#號(hào)代表多個(gè)單詞(或者0個(gè))柄错,前者可以理解為精確匹配舷夺,后者可以理解為模糊匹配苦酱。
    1.4 標(biāo)題匹配,header
    這是一種標(biāo)題匹配模式冕房,它不需要字符串類型的routingKey躏啰,而是采用鍵值對(duì)進(jìn)行匹配。生產(chǎn)者在發(fā)送消息的時(shí)候設(shè)置一些鍵值對(duì)耙册,消費(fèi)者在綁定的時(shí)候設(shè)置一些鍵值對(duì),兩者匹配成功才能接收到消息毫捣。它有兩種類型详拙,一種是all,一種是any蔓同,all代表全部鍵值對(duì)匹配成功饶辙,any代表部分匹配成功。這兩種類型在消費(fèi)者端都必須采用"x-match"來(lái)定義斑粱。
  2. 在聲明隊(duì)列的時(shí)候弃揽,我沒(méi)有給隊(duì)列名,這是因?yàn)樵虮保覀冃枰粋€(gè)臨時(shí)隊(duì)列矿微,讓生產(chǎn)者把消息發(fā)送到所有隊(duì)列上,而不能指定一個(gè)隊(duì)列尚揣。

二涌矢、發(fā)送方法

- (void)send
{
    RMQConnection * connection = [[RMQConnection alloc] initWithDelegate:[RMQConnectionDelegateLogger new]];
    [connection start];
    id<RMQChannel> channel = [connection createChannel];
    RMQExchange * exchange = [channel fanout:self.exTF.text options:RMQExchangeDeclareAutoDelete];
    [exchange publish:[self.msgTF.text dataUsingEncoding:NSUTF8StringEncoding]];
    [connection close];
}

說(shuō)明:發(fā)送方法的匹配模式要和接收方法的匹配模式一樣。
這一章結(jié)束快骗。
附上DEMO地址娜庇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市方篮,隨后出現(xiàn)的幾起案子名秀,更是在濱河造成了極大的恐慌,老刑警劉巖藕溅,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匕得,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蜈垮,警方通過(guò)查閱死者的電腦和手機(jī)耗跛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)攒发,“玉大人调塌,你說(shuō)我怎么就攤上這事』菰常” “怎么了羔砾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我姜凄,道長(zhǎng)政溃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任态秧,我火速辦了婚禮董虱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘申鱼。我一直安慰自己愤诱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布捐友。 她就那樣靜靜地躺著淫半,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匣砖。 梳的紋絲不亂的頭發(fā)上科吭,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音猴鲫,去河邊找鬼对人。 笑死,一個(gè)胖子當(dāng)著我的面吹牛变隔,可吹牛的內(nèi)容都是我干的规伐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼匣缘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼猖闪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起肌厨,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤培慌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后柑爸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吵护,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年表鳍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了馅而。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡譬圣,死狀恐怖瓮恭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情厘熟,我是刑警寧澤屯蹦,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布维哈,位于F島的核電站,受9級(jí)特大地震影響登澜,放射性物質(zhì)發(fā)生泄漏阔挠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一脑蠕、第九天 我趴在偏房一處隱蔽的房頂上張望购撼。 院中可真熱鬧,春花似錦谴仙、人聲如沸份招。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至廓旬,卻和暖如春哼审,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背孕豹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工涩盾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人励背。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓春霍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親叶眉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子址儒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)衅疙,斷路器莲趣,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • 1 RabbitMQ安裝部署 這里是ErLang環(huán)境的下載地址http://www.erlang.org/down...
    Bobby0322閱讀 2,223評(píng)論 0 11
  • 來(lái)源 RabbitMQ是用Erlang實(shí)現(xiàn)的一個(gè)高并發(fā)高可靠AMQP消息隊(duì)列服務(wù)器。支持消息的持久化饱溢、事務(wù)喧伞、擁塞控...
    jiangmo閱讀 10,344評(píng)論 2 34
  • RabbitMQ 即一個(gè)消息隊(duì)列,主要是用來(lái)實(shí)現(xiàn)應(yīng)用程序的異步和解耦绩郎,同時(shí)也能起到消息緩沖潘鲫,消息分發(fā)的作用。 消息...
    彩虹之夢(mèng)閱讀 1,082評(píng)論 2 1
  • 哈嘍哈~大家好,我只是單純的來(lái)一波水彩分享兽愤,自己還是個(gè)技術(shù)渣彼念,工具用的也不是什么牌子的挪圾。等工具買齊了再來(lái)轟炸! 1...
    丨Sherry丨閱讀 491評(píng)論 3 4