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

0.目錄

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

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

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

1.簡介

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

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

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

2.綁定

回顧一下上一章的隊列綁定代碼

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

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

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

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

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

網(wǎng)友評論