轉(zhuǎn)載請注明出處

0.目錄

RabbitMQ-從基礎(chǔ)到實(shí)戰(zhàn)(1)— Hello RabbitMQ

RabbitMQ-從基礎(chǔ)到實(shí)戰(zhàn)(2)— 防止消息丟失

RabbitMQ-從基礎(chǔ)到實(shí)戰(zhàn)(3)— 消息的交換(上)

1.簡介

本章節(jié)和官方教程相似度較高,英文好的可以移步官方教程

在上一章的例子中,我們創(chuàng)建了一個(gè)消費(fèi)者,生產(chǎn)日志消息,廣播給兩個(gè)消費(fèi)者,對消息進(jìn)行不同的處理。這一節(jié),我們將對它進(jìn)行擴(kuò)展,實(shí)現(xiàn)一些更加高級的功能,例如:使消費(fèi)者A只接受error級別的日志保存到硬盤,消費(fèi)者B接收所有級別的消息進(jìn)行打印。

本文中涉及到的所有概念(包括前面幾章),都將摒棄個(gè)人經(jīng)驗(yàn),以官方文檔為基礎(chǔ)進(jìn)行講解,在書寫本文的同時(shí),也是我對RabbitMQ的重新學(xué)習(xí)。

2.綁定

回顧一下上一章的隊(duì)列綁定代碼

// 把剛剛獲取的隊(duì)列綁定到logs這個(gè)交換中心上,
channel.queueBind(queueName, "logs", "");

這段代碼在消費(fèi)者中,為什么生產(chǎn)者沒有?因?yàn)樵赗abbitMQ中消息是發(fā)送到交換中心(exchange)的,這在上一張已經(jīng)重點(diǎn)強(qiáng)調(diào)過。

上述代碼可以理解成,queueName這個(gè)隊(duì)列對logs這個(gè)exchange中的消息感興趣,routingKey是""

在發(fā)送消息的basicPublish方法中,也有一個(gè)參數(shù)叫做routingKey,沒錯(cuò),他們是有關(guān)聯(lián)的,下面會介紹

在不同的exchange類型中,routingKey扮演的角色也相應(yīng)的不同,比如上一章我們使用的fanout(扇出,多貼切的名字,想象一下WOW中盜賊的刀扇)將忽略routingKey,所有綁定在fanout類型的exchange上的隊(duì)列,都將接收到該exchange上的所有消息。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式