亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RabbitMQ主題模式怎么實現

發布時間:2022-09-27 16:23:48 來源:億速云 閱讀:123 作者:iii 欄目:開發技術

這篇文章主要講解了“RabbitMQ主題模式怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“RabbitMQ主題模式怎么實現”吧!

Springboot RabbitMQ 主題模式

生產者聲明了三個隊列和一個主題切換。隊列分別與主題交換機綁定,并設置了路由鍵統一字符。如果路由鍵滿足交換機和隊列之間的通配符要求,則將消息存儲在隊列中

#通配符可以匹配一個或多個單詞,*通配符可以匹配一個單詞;如果Exchange和隊列之間的routing key通配符是#hello.#,則表示中間所有帶hello的routing key都滿足條件,消息會被存入隊列

導入 com.example.rabbitmq.constant.RabbitConstant;
導入 org.springframework.amqp.core.Binding;
導入 org.springframework.amqp.core.BindingBuilder;
導入 org.springframework.amqp.core.Queue;
導入 org.springframework.amqp.core.TopicExchange;
導入 org.springframework.context.annotation.Bean;
導入 org.springframework.context.annotation.Configuration;@Configuration public class RabbitTopicProvider { 
    @Bean 
    public Queue topicFirstQueue() { 
        return new Queue(RabbitConstant.TOPICS_FIRST_QUEUE_NAME); 
    } 
    @Bean
    公共隊列 topicSecondQueue() { 
        return new Queue(RabbitConstant.TOPICS_SECOND_QUEUE_NAME);
    } 
    @Bean
    公共隊列 topicThirdQueue() { 
        return new Queue(RabbitConstant.TOPICS_THIRD_QUEUE_NAME); 
    } 
    @Bean 
    public TopicExchange topicExchange() { 
        // 創建一個主題類型切換,表示交換機會發送消息到 routing_key 通配符匹配隊列成功
        return new TopicExchange(RabbitConstant.TOPICS_EXCHANGE_NAME); 
    } 
    @Bean 
    public Binding topicFirstQueueBindExchange() { 
        // 綁定topic類型切換到隊列1并設置routing_key通配符#first.#
        return BindingBuilder.bind(topicFirstQueue()).to(topicExchange()).with(RabbitConstant.TOPICS_ROUTING_KEY_FIRST_WILDCARD); 
    } 
    @Bean 
    public Binding topicSecondQueueBindExchange() { 
        //第二個隊列綁定主題類型切換,設置路由_key通配符為* second.# 
        return BindingBuilder.bind(topicSecondQueue()).to(topicExchange()) .with(RabbitConstant.TOPICS_ROUTING_KEY_SECOND_WILDCARD); 
    } 
    @Bean 
    public Binding topicThirdQueueBindExchange() { 
        // 三個隊列綁定主題切換,設置routing_key通配符為*third.*
        return BindingBuilder.bind(topicThirdQueue()).to(topicExchange()).with(RabbitConstant.TOPICS_ROUTING_KEY_THRID_WILDCARD); 
    } 
}

消費者監聽隊列并消費

導入 com.example.rabbitmq.constant.RabbitConstant;
導入 org.springframework.amqp.rabbit.annotation.RabbitHandler;
導入 org.springframework.amqp.rabbit.annotation.RabbitListener;
導入 org.springframework.stereotype.Component;
@Component public class RabbitTopicsConsumer { 
    @RabbitListener(queues = RabbitConstant.TOPICS_FIRST_QUEUE_NAME) 
    @RabbitHandler 
    public void topicFirstQueue(String context) { 
        System.out.println("rabbit topics queue first receiver:" + context); 
    } 
    @RabbitListener(queues = RabbitConstant.TOPICS_SECOND_QUEUE_NAME) 
    @RabbitHandler 
    public void topicSecondQueue(String context) {        System.out.println("兔子主題隊列第二個接收者:" + context); 
    } 
    @RabbitListener(queues = RabbitConstant.TOPICS_THIRD_QUEUE_NAME) 
    @RabbitHandler 
    public void topicThirdQueue(String context) { 
        System.out.println("rabbit 主題隊列第三個接收者:" + context); 
    } 
}

單元測試

@Test public void topics() { 
    // 向第一個隊列發送消息。這時候隊列可以接收到消息,因為隊列的通配符是#first.#,而routing_key是topics first。路由。鍵,匹配成功
    rabbitTemplate.convertAndSend(RabbitConstant.TOPICS_EXCHANGE_NAME, RabbitConstant.TOPICS_FIRST_QUEUE_ROUTING_KEY, "topics hello"); 
    // 向第二個隊列發送消息。這時候隊列也能收到消息了,因為隊列的通配符是*秒#,而routing_key是topic秒。路由。鍵,匹配成功
    rabbitTemplate.convertAndSend(RabbitConstant.TOPICS_EXCHANGE_NAME, RabbitConstant.TOPICS_SECOND_QUEUE_ROUTING_KEY, "topics hello");    // 向第三個隊列發送消息。此時隊列無法接受消息,因為隊列通配符是*第三個*,而routing_key是topics第三個。路由。鍵,匹配失敗
    rabbitTemplate.convertAndSend(RabbitConstant.TOPICS_EXCHANGE_NAME, RabbitConstant.TOPICS_THIRD_QUEUE_ROUTING_KEY, "topics hello"); 
    }

響應結果

感謝各位的閱讀,以上就是“RabbitMQ主題模式怎么實現”的內容了,經過本文的學習后,相信大家對RabbitMQ主題模式怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄石市| 井冈山市| 通化县| 务川| 昌都县| 文安县| 普兰县| 鄯善县| 永康市| 米易县| 玉环县| 晋城| 晋州市| 凌云县| 德江县| 丘北县| 通河县| 友谊县| 苍山县| 穆棱市| 格尔木市| 镇沅| 孟津县| 兴仁县| 长武县| 万全县| 南阳市| 永康市| 锡林郭勒盟| 汕头市| 社旗县| 吉林市| 偏关县| 沽源县| 衡东县| 南澳县| 盈江县| 南召县| 冷水江市| 澎湖县| 温泉县|