1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        SpringBoot整合RabbitMQ 實現(xiàn)五種消息模型

        共 1081字,需瀏覽 3分鐘

         ·

        2021-01-29 00:38

        點擊上方藍(lán)色字體,選擇“置頂或者星標(biāo)”?


        優(yōu)質(zhì)文章第一時間送達(dá)!


        SpringBoot中使用RabbitMQ

        搭建初始環(huán)境

        引入依賴

        ????
        ????<dependency>
        ????????<groupId>org.springframework.bootgroupId>
        ????????<artifactId>spring-boot-starter-amqpartifactId>
        ????dependency>

        配置配置文件

        server:
        ??port:?9090

        spring:
        ??application:
        ????#?微服務(wù)系統(tǒng)有意義,?養(yǎng)成好習(xí)慣,?先寫出來
        ????name:?rabbitmq-02-springboot
        ??rabbitmq:
        ????host:?127.0.0.1
        ????port:?5672
        ????username:?codingce
        ????password:?123456
        ????virtual-host:?/codingce

        測試類 注入 rabbitTemplate

        ????//?注入?rabbitTemplate
        ????@Autowired
        ????private?RabbitTemplate?rabbitTemplate;

        消息隊列RabbitMQ之五種消息模型

        第一種直連模型使用

        開發(fā)生產(chǎn)者

        ????/**
        ?????*?直連
        ?????*/

        ????@Test
        ????void?contextLoads()?{
        ????????rabbitTemplate.convertAndSend("hello",?"hello?word");
        ????}

        開發(fā)消費者

        /**
        ?*?@author?mxz
        ?*/

        @Component
        @RabbitListener(queuesToDeclare?=?@Queue("hello"))
        public?class?HelloCustomer?{

        ????/**
        ?????*?@param?message
        ?????*/

        ????@RabbitHandler
        ????public?void?receivel(String?message)?{
        ????????System.out.println("message:?"?+?message);
        ????}

        }

        第二種work模型使用

        開發(fā)生產(chǎn)者

        ????/**
        ?????*?work
        ?????*/

        ????@Test
        ????void?testWork()?{
        ????????for?(int?i?=?0;?i?10;?i++)?{
        ????????????rabbitTemplate.convertAndSend("work",?"work模型");
        ????????}
        ????}

        開發(fā)消費者

        /**
        ?*?第二種模型?work?模型
        ?*
        ?*?@author?mxz
        ?*/

        @Component
        public?class?WorkCustomer?{
        ????/**
        ?????*?第1個消費者
        ?????*
        ?????*?@param?message
        ?????*/

        ????@RabbitListener(queuesToDeclare?=?@Queue("work"))
        ????public?void?receivel(String?message)?{
        ????????System.out.println("message1?=?"?+?message);
        ????}

        ????/**
        ?????*?第2個消費者
        ?????*
        ?????*?@param?message
        ?????*/

        ????@RabbitListener(queuesToDeclare?=?@Queue("work"))
        ????public?void?receivel2(String?message)?{
        ????????System.out.println("message2?=?"?+?message);
        ????}
        }

        第三種 Fanout 廣播模型

        開發(fā)生產(chǎn)者

        ????/**
        ?????*?fanout?廣播
        ?????*/

        ????@Test
        ????void?testFanout()?{
        ????????rabbitTemplate.convertAndSend("logs",?"",?"Fanout模型發(fā)送的消息");
        ????}

        開發(fā)消費者

        /**
        ?*?fanout
        ?*
        ?*?@author?mxz
        ?*/

        @Component
        public?class?FanoutCustomer?{

        ????@RabbitListener(bindings?=?{
        ????????????@QueueBinding(
        ????????????????????value?=?@Queue,??//?創(chuàng)建臨時隊列
        ????????????????????exchange?=?@Exchange(value?=?"logs",?type?=?"fanout")?????//?綁定的交換機(jī)
        ????????????)
        ????})
        ????public?void?receivel(String?message)?{
        ????????System.out.println("message1?=?"?+?message);
        ????}

        ????@RabbitListener(bindings?=?{
        ????????????@QueueBinding(
        ????????????????????value?=?@Queue,??//?創(chuàng)建臨時隊列
        ????????????????????exchange?=?@Exchange(value?=?"logs",?type?=?"fanout")?????//?綁定的交換機(jī)
        ????????????)
        ????})
        ????public?void?receive2(String?message)?{
        ????????System.out.println("message2?=?"?+?message);
        ????}
        }

        第四種 Route 路由模型

        開發(fā)生產(chǎn)者

        ????/**
        ?????*?route?路由
        ?????*/

        ????@Test
        ????void?testRoute()?{
        ????????//?exchange?交換機(jī)名稱
        ????????rabbitTemplate.convertAndSend("directs",?"info",?"info的key的路由消息");
        ????}

        開發(fā)消費者

        /**
        ?*?@author?mxz
        ?*/

        @Component
        public?class?RouteCustomer?{

        ????@RabbitListener(bindings?=?{
        ????????????@QueueBinding(
        ????????????????????value?=?@Queue,?//?綁定臨時隊列
        ????????????????????exchange?=?@Exchange(value?=?"directs",?type?=?"direct"),?//?自定義交換機(jī)名稱和類型
        ????????????????????key?=?{"info",?"error",?"warn"}
        ????????????)
        ????})
        ????public?void?receivel(String?message)?{
        ????????System.out.println("message1?=?"?+?message);
        ????}

        ????@RabbitListener(bindings?=?{
        ????????????@QueueBinding(
        ????????????????????value?=?@Queue,?//?綁定臨時隊列
        ????????????????????exchange?=?@Exchange(value?=?"directs",?type?=?"direct"),?//?自定義交換機(jī)名稱和類型
        ????????????????????key?=?{"error"}
        ????????????)
        ????})
        ????public?void?receivel2(String?message)?{
        ????????System.out.println("message1?=?"?+?message);
        ????}

        }

        第五種 Topic 訂閱模型(動態(tài)路由模型)

        開發(fā)生產(chǎn)者

        ????/**
        ?????*?topic?訂閱模式?動態(tài)路由
        ?????*/

        ????@Test
        ????void?testTopic()?{
        ????????rabbitTemplate.convertAndSend("topics",?"user.save",?"user.save?路由消息");
        ????}

        開發(fā)消費者

        /**
        ?*?訂閱模型
        ?*
        ?*?@author?mxz
        ?*/

        @Component
        public?class?TopicCustomer?{

        ????@RabbitListener(bindings?=?{
        ????????????@QueueBinding(
        ????????????????????value?=?@Queue,
        ????????????????????exchange?=?@Exchange(type?=?"topic",?name?=?"topics"),
        ????????????????????key?=?{"user.save",?"user.*"}
        ????????????)
        ????}
        ????)
        ????public?void?receivel(String?message)?{
        ????????System.out.println("message1"?+?message);
        ????}

        ????@RabbitListener(bindings?=?{
        ????????????@QueueBinding(
        ????????????????????value?=?@Queue,
        ????????????????????exchange?=?@Exchange(type?=?"topic",?name?=?"topics"),
        ????????????????????key?=?{"produce.#",?"order.#"}
        ????????????)
        ????}
        ????)
        ????public?void?receivel2(String?message)?{
        ????????System.out.println("message2"?+?message);
        ????}
        }

        文章已上傳gitee https://gitee.com/codingce/hexo-blog
        項目地址github: https://github.com/xzMhehe/codingce-java




        更多推薦內(nèi)容

        ↓↓↓

        Elasticsearch應(yīng)用之京東搜索

        IK分詞器詳解

        30個編程領(lǐng)域的趣圖

        如果你喜歡本文

        請長按二維碼,關(guān)注公眾號

        轉(zhuǎn)發(fā)朋友圈,是對我最大的支持喲

        以上,便是今天的分享,希望大家喜歡,覺得內(nèi)容不錯的,歡迎「分享」「」或者點擊「在看」支持,謝謝各位。

        瀏覽 66
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产精品嫩穴 | 亚洲激情视频网 | 天堂俺去俺来也 | 中文字幕视频在线观看 | 色综合色狠狠天天综合色 | 日日夜夜添 | 老女人性爱视频 | 日韩欧美18禁 | 一本色道久久综合亚洲精品按摩 | 久久成人视频 |