成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

RabbitMQ的四種交換機(jī)詳解

開發(fā) 前端
direct 類型的行為是"先匹配, 再投送". 即:在綁定時(shí)設(shè)定一個(gè) routingkey, 消息的routingkey 匹配時(shí), 才會被交換器投送到綁定的隊(duì)列中。是RabbitMQ默認(rèn)的交換機(jī)模式,也是最簡單的模式,根據(jù)key全文匹配去尋找隊(duì)列。(按照routingkey分發(fā)到指定隊(duì)列)

  交換機(jī)主要是接收消息并且轉(zhuǎn)發(fā)到綁定的隊(duì)列,交換機(jī)不存儲消息,在啟用ack模式后,交換機(jī)找不到隊(duì)列會返回錯(cuò)誤。交換機(jī)有四種類型:Direct, topic, Headers and Fanout。

圖片圖片

一、topic exchange----(模糊匹配) 

    按規(guī)則轉(zhuǎn)發(fā)消息(最靈活),轉(zhuǎn)發(fā)消息主要是根據(jù)通配符。在這種交換機(jī)下,隊(duì)列和交換機(jī)的綁定會定義一種路由模式,那么,通配符就要在這種路由模式和路由鍵之間匹配后交換機(jī)才能轉(zhuǎn)發(fā)消息。

    1、 路由鍵(routingKey):必須是字符,用句號.隔開:例如:"order.a";(一般有發(fā)布者定義);

    2、路由模式:必須包含一個(gè) 星號(*),主要用于匹配路由鍵指定位置的一個(gè)單詞, #就表示相當(dāng)于一個(gè)或者多個(gè)單詞。(例如:order.*.*.*….)(一般由接收者提供),但是也可通過rabbitmq客戶端配置。常用在隊(duì)列Queues定義中。

    direct類型要求routingkey完全相等,但是topic exchange可以有通配符:“*”:表示匹配一個(gè)單詞, “#”:則表示匹配沒有或者多個(gè)單詞。優(yōu)勢:可實(shí)現(xiàn)批量訂閱消費(fèi)。(Routingkey與Queues之間支持模糊匹配)。

圖片圖片

案例:

/**
     * 功能描述:通過消費(fèi)端注解綁定的方式發(fā)送Topic交換機(jī)中
     * @MethodName: sendTopicMessageByZJ
     * @MethodParam: [messageData]
     * @Return: void
     * @Author: yyalin
     * @CreateDate: 2022/4/9 18:17
     */
    public void sendTopicMessageByZJ(String messageData){
        CorrelationData correlationData = new CorrelationData("1");
        rabbitTemplate.convertAndSend("topicExchange",
                "china.car",messageData,correlationData);
    }

二、direct exchange----默認(rèn)的(全文匹配)

    direct 類型的行為是"先匹配, 再投送". 即:在綁定時(shí)設(shè)定一個(gè) routingkey, 消息的routingkey 匹配時(shí), 才會被交換器投送到綁定的隊(duì)列中。是RabbitMQ默認(rèn)的交換機(jī)模式,也是最簡單的模式,根據(jù)key全文匹配去尋找隊(duì)列。(按照routingkey分發(fā)到指定隊(duì)列)

    所有發(fā)送到direct exchange的消息被轉(zhuǎn)發(fā)到routingkey中指定到queue。

注意:direct模式可使用rabbitmq自帶的exchange:AMQP default,所以不需將exchange進(jìn)行任何綁定操作(binding),消息傳遞時(shí),routingkey必須完全匹配才會被對列接收,否則該消息會被拋棄。(Routingkey與Queues之間必須全文匹配)。

圖片圖片

    在direct類型的exchange中,只有routingkey完全相同,exchange才會選擇對應(yīng)的binging進(jìn)行消息路由。

案例:

/**
     * 功能描述:通過消費(fèi)端注解綁定的方式發(fā)送Direct交換機(jī)中
     * @MethodName: sendDirectMessageByZJ
     * @MethodParam: [messageData]
     * @Return: void
     * @Author: yyalin
     * @CreateDate: 2022/4/9 18:17
     */
    public void sendDirectMessageByZJ(String messageData){
        CorrelationData correlationData = new CorrelationData("1");
        rabbitTemplate.convertAndSend("directExchange",
                "blue",messageData,correlationData);
    }

三、headers Exchange----(自定義匹配規(guī)則)

    設(shè)置header attribute參數(shù)類型的交換機(jī),相較于 direct 和 topic 固定地使用 routing_key , headers 則是一個(gè)自定義匹配規(guī)則的類型. 在隊(duì)列與交換器綁定時(shí), 會設(shè)定一組鍵值對規(guī)則, 消息中也包括一組鍵值對( headers 屬性), 當(dāng)這些鍵值對有一對, 或全部匹配時(shí), 消息被投送到對應(yīng)隊(duì)列.

四、fanout Exchange----(消息廣播模式)

    轉(zhuǎn)發(fā)消息到所有綁定隊(duì)列,消息廣播的模式,不管路由鍵或者是路由模式,會把消息發(fā)給綁定給它的全部隊(duì)列,如果配置了routing_key會被忽略。(直接將消息路由到所有綁定的隊(duì)列中,無須對消息的routingkey進(jìn)行匹配操作)。

圖片圖片

案例:

/**
     * 功能描述:發(fā)送FanoutMessage消息
     * @MethodName: sendFanoutMessage
     * @MethodParam: [messageData]
     * @Return: void
     * @Author: yyalin
     * @CreateDate: 2022/4/9 17:46
     */
    public void sendFanoutMessage(String messageData){
        CorrelationData correlationData = new CorrelationData("1");
        rabbitTemplate.convertAndSend("fanoutExchange",
                "",messageData,correlationData);
    }

五、總結(jié)

     一般direct和topic用來具體的路由消費(fèi),若要用廣播的消息一般用fanout的exchange,header類型比較少。

責(zé)任編輯:武曉燕 來源: 程序猿小楊
相關(guān)推薦

2023-08-10 11:39:54

RabbitMQSpring交換機(jī)

2019-05-08 10:50:37

交換機(jī)組網(wǎng)網(wǎng)絡(luò)

2010-01-12 17:21:31

百兆交換機(jī)

2010-01-04 10:33:38

核心交換機(jī)

2010-01-05 15:31:10

2010-01-13 17:12:22

核心交換機(jī)

2014-12-25 09:41:15

Android加載方式

2010-03-22 14:48:20

智能交換機(jī)

2019-11-17 22:03:00

交換機(jī)報(bào)文網(wǎng)絡(luò)設(shè)備

2022-08-10 06:16:49

網(wǎng)絡(luò)交換機(jī)網(wǎng)絡(luò)

2010-04-13 22:45:58

2009-12-17 13:34:05

2009-04-27 10:33:16

ASP.NET視圖狀態(tài)

2009-07-08 18:20:21

JDBC驅(qū)動(dòng)

2024-03-20 15:33:12

2010-01-04 15:13:27

交換機(jī)SNMP配置命令

2010-03-15 14:41:50

第四層交換機(jī)

2010-03-16 15:24:15

四層交換機(jī)

2010-01-14 10:43:18

交換機(jī)配置交換機(jī)種類

2009-03-31 13:12:30

解析XMLJava
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国户精品久久久久久久久久久不卡 | a级在线免费 | 亚洲欧美综合精品久久成人 | 福利影院在线看 | 国产精品永久 | 国产成人精品久久二区二区91 | 国产高清无av久久 | 日本中文字幕视频 | 中文字幕免费在线观看 | 成人影院在线视频 | 成人妇女免费播放久久久 | av日日操 | 中文成人无字幕乱码精品 | 中文字幕国产在线 | h小视频| 日韩中文字幕第一页 | 综合五月| 日韩一区二区三区视频在线观看 | 91精品国产91久久久久久吃药 | 精品自拍视频在线观看 | 国产成人精品999在线观看 | 91原创视频 | 欧美一区二区三区视频在线 | 天堂男人av | 黄色av网站在线观看 | 欧美午夜激情在线 | 一区二区免费在线视频 | 日韩在线一区二区 | 国产精品久久一区 | 国产高清在线观看 | 欧美日韩国产欧美 | 久热m3u8 | 国产色| 日日夜夜草 | 欧美日韩在线播放 | 荷兰欧美一级毛片 | 91在线视频免费观看 | 日韩一区二区三区四区五区六区 | 日韩在线观看中文字幕 | 在线日韩福利 | 91在线免费视频 |