RabbitMQ第四個(gè)實(shí)操小案例——DirectExchange-創(chuàng)新互聯(lián)

文章目錄
  • RabbitMQ第四個(gè)實(shí)操小案例——DirectExchange

創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、察隅網(wǎng)絡(luò)推廣、微信小程序定制開(kāi)發(fā)、察隅網(wǎng)絡(luò)營(yíng)銷(xiāo)、察隅企業(yè)策劃、察隅品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪(fǎng)、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供察隅建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):13518219792,官方網(wǎng)址:muchs.cnRabbitMQ第四個(gè)實(shí)操小案例——DirectExchange

DirectExchange:這種交換機(jī)的模式跟前面的Fouout(廣播)不太一樣,DirectExchange 會(huì)將接收到的消息根據(jù)規(guī)則路由到指定的Queue,因此也被稱(chēng)之為 路由模式(routes)。

他的模型如下所示:
在這里插入圖片描述
我們先說(shuō)一下上面這個(gè)圖吧:

  • 每一個(gè)Queue都與Exchange綁定一個(gè)或多個(gè)bingingKey。(上面queue1與exchange綁定的bindingKey有red和blue,queue2與exchange綁定的bindingKey有red和yellow。)
  • Publisher發(fā)送消息時(shí),指定消息的bindingKey。
  • Exchange根據(jù)消息的bindingKey,將消息轉(zhuǎn)發(fā)到對(duì)應(yīng)的Queue。
    • 假如現(xiàn)在發(fā)送的消息的bindingKey為blue,那么消息將被queue1接收。
    • 假如現(xiàn)在發(fā)送的消息的bindingKey為yellow,那么消息將被queue2接收。
    • 假如現(xiàn)在發(fā)送的消息的bindingKey為red,那么消息將被queue1和queue2同時(shí)接收。

OK,廢話(huà)少說(shuō),老規(guī)矩,咱們代碼來(lái)一波:
實(shí)現(xiàn)思路:

步驟一、配置我們的配置類(lèi)。
步驟二、在Consumer服務(wù)中,編寫(xiě)兩個(gè)消費(fèi)者方法,分別監(jiān)聽(tīng)direct.queue1和direct.queue2。
步驟三、在Publisher服務(wù)中,編寫(xiě)測(cè)試方法,向交換機(jī)exchange.direct發(fā)送消息。

步驟一、使用我們的@RabbitListener注解聲明我們的Exchange、Queue、RoutingKey,編寫(xiě)兩個(gè)消費(fèi)者方法。

@RabbitListener(bindings = @QueueBinding(
        value = @Queue(name = "direct.queue1"),
        exchange = @Exchange(name = "exchange.direct", type = ExchangeTypes.DIRECT),
        key = {"red", "blue"}
))
public void listenerDirectQueue1(String msg){System.out.println("監(jiān)聽(tīng)到 direct.queue1 的消息為:【"+ msg +"】");
}

@RabbitListener(bindings = @QueueBinding(
        value = @Queue(name = "direct.queue2"),
        exchange = @Exchange(name = "exchange.direct", type = ExchangeTypes.DIRECT),
        key = {"red", "yellow"}
))
public void listenerDirectQueue2(String msg){System.err.println("監(jiān)聽(tīng)到 direct.queue2 的消息為:【"+ msg +"】");
}

編寫(xiě)完代碼,我們重啟一下我們的消費(fèi)者服務(wù),然后我們看一下我們的RabbitMQ。可以看到,此時(shí)我們的交換機(jī)中,綁定的有兩個(gè)queue,其中queue1監(jiān)聽(tīng)的RoutingKey有blue和red、queue2監(jiān)聽(tīng)的RoutingKey有yellow和red。
在這里插入圖片描述
我們也可以看看我們的queue,確實(shí)也多了倆,一個(gè)叫direct.queue1,一個(gè)叫direct.queue2。
在這里插入圖片描述

步驟二、在Publisher服務(wù)中,編寫(xiě)測(cè)試方法,向交換機(jī)exchange.direct發(fā)送消息。

@Test
    public void testDirectExchange(){//交換機(jī)的名稱(chēng)
        String exchangeName = "exchange.direct";
        //消息
        String blueMsg = "Hello, Blue.";
        String redMsg = "Hello, Red.";
        String yellowMsg = "Hello, Yellow.";
        //發(fā)送消息
        for (int i = 0; i< 10; i++){if (i % 3 == 0){rabbitTemplate.convertAndSend(exchangeName, "blue", blueMsg);
            }else if (i % 3 == 1){rabbitTemplate.convertAndSend(exchangeName, "yellow", yellowMsg);
            }else {rabbitTemplate.convertAndSend(exchangeName, "red", redMsg);
            }
        }
    }

運(yùn)行我們的測(cè)試方法后,我們看一下Consumer服務(wù)的控制臺(tái)打印消息:
在這里插入圖片描述
可以看到,direct.queue1 監(jiān)聽(tīng)到的消息有 Hello, Red 和 Hello, Blue,而direct.queue2 監(jiān)聽(tīng)到的消息有 Hello, Red 和 Hello, Yellow.

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享標(biāo)題:RabbitMQ第四個(gè)實(shí)操小案例——DirectExchange-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://muchs.cn/article28/deiocp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、動(dòng)態(tài)網(wǎng)站、外貿(mào)建站網(wǎng)站維護(hù)、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)