91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

大渡口区| 潮安县| 朝阳区| 滦平县| 武乡县| 台湾省| 额尔古纳市| 略阳县| 南岸区| 方正县| 雷州市| 古交市| 镇原县| 汉阴县| 永年县| 胶州市| 茶陵县| 大悟县| 龙岩市| 乌什县| 阳朔县| 九江县| 平罗县| 青阳县| 平乐县| 浮山县| 汤原县| 灌南县| 商南县| 雅安市| 平南县| 鲜城| 灵璧县| 息烽县| 平湖市| 敦煌市| 石狮市| 松桃| 宿州市| 长宁区| 平潭县|