日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

交換機主要是接收消息并且轉發到綁定的隊列,交換機不存儲消息,在啟用ack模式后,交換機找不到隊列會返回錯誤。交換機有四種類型:Direct, topic, Headers and Fanout。

RabbitMQ的四種交換機詳解圖片

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

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

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

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

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

RabbitMQ的四種交換機詳解圖片

案例:

/**
     * 功能描述:通過消費端注解綁定的方式發送Topic交換機中
     * @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----默認的(全文匹配)

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

    所有發送到direct exchange的消息被轉發到routingkey中指定到queue。

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

RabbitMQ的四種交換機詳解圖片

    在direct類型的exchange中,只有routingkey完全相同,exchange才會選擇對應的binging進行消息路由。

案例:

/**
     * 功能描述:通過消費端注解綁定的方式發送Direct交換機中
     * @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----(自定義匹配規則)

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

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

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

RabbitMQ的四種交換機詳解圖片

案例:

/**
     * 功能描述:發送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);
    }

五、總結

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

分享到:
標簽:交換機
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定