日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Fanout交换器-编写消费者

發布時間:2024/4/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Fanout交换器-编写消费者 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們已經把環境搭建好了,我們就來編寫Provider和Consumer,我們首先 來編寫Consumer,然后回到我們的代碼當中,我們看一下配置文件,在這個配置文件當中呢,配置了交換器的名稱mq.config.exchange=order.fanout mq.config.queue.sms=order.sms mq.config.queue.push=order.push配置了短信隊列名稱,短信平臺服務隊列名稱,這個是push服務隊列名稱,我們把它更新到自己的服務平臺當中,那么這兩個名稱大家應該知道表示什么了,是我們看到的這兩個Queue的名稱,我們打算給這兩個Queue取這兩個名字,然后交換器起的名字,現在我們-直接拷貝direct項目下的,還是日志記錄的Receiver,那我們是不是要把這兩個Receiver給改一下,首先名稱我們不能叫InfoReceiver,比如我們先去做短信服務,SmsReceiver,然后ErrorReceiver,就是Push服務的,PushReceiver,首先名字改好以后呢,接下來我們再看,在@RabbitListener我們該怎么沒去做呢,首先第一個value這一塊,綁定了隊列的名稱,現在還是info這里是不是得改了,那這里綁誰呢,看我們的配置文件,這里是不是要綁sms所對應的value,因為我們給隊列起名叫sms嗎,所以這塊是sms,這是要改動的第一個地方,第二個地方是exchange,這個值不用動吧,這個key值不就是他嗎,所以這個名字就不用動,我們已經改好了mq.config.exchange=order.fanout關鍵是type這里,type我們這里用的還是direct,得把它改成fanout,然后再往后看,這里還有一個key的屬性,這個key表示的是什么,我們之前也說過,這個key就是標示路由鍵,其實我們通過寫前兩個案例,direct和topic的,應該也能體會到路由鍵的特點,其實路由鍵的特點就是告訴交換器,現在我要將哪個信息交換到哪個隊列當中,那我們現在用的fanout,它是廣播模式,所有的隊列都要有,既然所有隊列都要有了,還有區分這個概念嗎,就沒有了,沒有區分這個概念,那么路由鍵就不需要存在了,是的,這塊大家需要注意,在我們的fanout交換器當中,不需要路由鍵的,如果你要給他加路由鍵,不是廣播模式了,那就是根據你特定的路由鍵,將信息發送到指定的隊列當中了,就是特定的隊列當中了,并不是將消息傳遞到所有的消息隊列當中了,所以一定要注意,我們一定要把路由鍵給刪掉,@RabbitListener(bindings=@QueueBinding(value=@Queue(value="${mq.config.queue.sms}",autoDelete="true"),exchange=@Exchange(value="${mq.config.exchange}",type=ExchangeTypes.FANOUT)))這樣一個sms的服務就修改完了,然后我們在這里再改一改這個名字,@RabbitHandler public void process(String msg){System.out.println("Sms........receiver: "+msg); }然后PushReceiver,這個也是同樣的道理,首先需要把消息隊列的名稱給改一下,這個叫pushvalue="${mq.config.queue.push}"應該是叫push,然后這兒,type=ExchangeTypes.FANOUT,這個應該是fanout,然后他也是沒有key,沒有路由鍵,有路由鍵的反而收不到消息的,我們現在把這個代碼粘到筆記當中@RabbitListener(bindings=@QueueBinding(value=@Queue(value="${mq.config.queue.push}",autoDelete="true"),exchange=@Exchange(value="${mq.config.exchange}",type=ExchangeTypes.FANOUT)) )這個是smsReceiver,然后接下來是PushReceiver,這樣我們的Consumer就編寫完了,我們建立了兩個模擬服務的類,一個是SmsReceiver,一個是PushReceiver,然后把它標記一下,在這里,這一塊${mq.config.queue.sms}是需要改變的,第二個就是這個type=ExchangeTypes.FANOUT,交換器的類型,這兒也是,value="${mq.config.queue.push}",這塊需要改動一下,然后還有交換器的類型type=ExchangeTypes.FANOUT <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn</groupId><artifactId>rabbitmq-fanout-consumer</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version><relativePath/> </parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><thymeleaf.version>3.0.9.RELEASE</thymeleaf.version><thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!-- 這個插件,可以將應用打包成一個可執行的jar包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project> spring.application.name=rabbitmq-fanout-consumerspring.rabbitmq.host=59.110.158.145 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guestmq.config.exchange=order.fanout mq.config.queue.sms=order.sms mq.config.queue.push=order.push package com.learn;import org.springframework.amqp.core.ExchangeTypes; import org.springframework.amqp.rabbit.annotation.Exchange; import org.springframework.amqp.rabbit.annotation.Queue; import org.springframework.amqp.rabbit.annotation.QueueBinding; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component;/*** 消息接收者* @author Administrator* @RabbitListener bindings:綁定隊列* @QueueBinding value:綁定隊列的名稱* exchange:配置交換器* key:路由鍵* * @Queue value:配置隊列名稱* autoDelete:是否是一個可刪除的臨時隊列* * @Exchange value:為交換器起個名稱* type:指定具體的交換器類型*/ @Component @RabbitListener(bindings=@QueueBinding(value=@Queue(value="${mq.config.queue.sms}",autoDelete="true"),exchange=@Exchange(value="${mq.config.exchange}",type=ExchangeTypes.FANOUT))) public class SmsReceiver {/*** 接收消息的方法。采用消息隊列監聽機制* @param msg*/@RabbitHandlerpublic void process(String msg){System.out.println("Sms........receiver: "+msg);} } package com.learn;import org.springframework.amqp.core.ExchangeTypes; import org.springframework.amqp.rabbit.annotation.Exchange; import org.springframework.amqp.rabbit.annotation.Queue; import org.springframework.amqp.rabbit.annotation.QueueBinding; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component;/*** 消息接收者* @author Administrator* @RabbitListener bindings:綁定隊列* @QueueBinding value:綁定隊列的名稱* exchange:配置交換器* * @Queue value:配置隊列名稱* autoDelete:是否是一個可刪除的臨時隊列* * @Exchange value:為交換器起個名稱* type:指定具體的交換器類型*/ @Component @RabbitListener(bindings=@QueueBinding(value=@Queue(value="${mq.config.queue.push}",autoDelete="true"),exchange=@Exchange(value="${mq.config.exchange}",type=ExchangeTypes.FANOUT))) public class PushReceiver {/*** 接收消息的方法。采用消息隊列監聽機制* @param msg*/@RabbitHandlerpublic void process(String msg){System.out.println("Push..........receiver: "+msg);} } package com.learn;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication public class RabbitFanoutConsumerApplication {public static void main(String[] args) {SpringApplication.run(RabbitFanoutConsumerApplication.class, args);} }

?

總結

以上是生活随笔為你收集整理的Fanout交换器-编写消费者的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩一卡 | 欧美日韩国产一区二区在线观看 | 亚洲综合影院 | 中文字幕第6页 | 国产aa大片 | 欧美熟妇乱码在线一区 | 日韩精品美女 | 99精品视频播放 | 国产精品久久麻豆 | 亚洲天堂日韩在线 | 亚洲国产剧情在线观看 | 欧美狠狠 | 久久一二三四区 | 精品国产乱码久久久久久影片 | 中文天堂在线播放 | 欧美三日本三级少妇三级99观看视频 | 影音先锋中文字幕一区二区 | 亚洲av日韩精品久久久久久久 | 无码精品视频一区二区三区 | 99精品久久精品一区二区 | www免费网站在线观看 | 极品福利视频 | 黄色链接视频 | 亚洲综合精品国产 | 国产精品一区二区三区免费看 | 雷电将军和丘丘人繁衍后代视频 | 四虎成人精品永久免费av九九 | 精品人妻无码中文字幕18禁 | 色啪视频| 久久久精品人妻一区二区三区 | 丁香花电影在线观看免费高清 | 国产精品国产三级国产在线观看 | 九九热视频在线 | 337p日本欧洲亚洲大胆精筑 | 亚洲熟妇无码爱v在线观看 九色福利 | 可以直接看的毛片 | 久久av网址| 6080电视影片在线观看 | 午夜羞羞网站 | 亚洲乱强伦 | 狠狠成人| 高h免费视频 | 婷婷另类小说 | 一区精品在线观看 | 婷婷综合亚洲 | 国产丰满农村老妇女乱 | 青青草欧美 | 亚州视频在线 | 最好看的mv中文字幕国语电影 | 波多野结衣网址 | 一级片一区二区三区 | 欧美日韩亚洲在线观看 | 黄页网站在线播放 | 国产第七页| 妖精视频一区二区 | 91亚洲精品一区二区乱码 | 亚州中文| 最色成人网| 97se亚洲| 古装做爰无遮挡三级视频 | 伊人久久麻豆 | 蜜桃91丨九色丨蝌蚪91桃色 | 国产精品久久毛片av大全日韩 | 开心激情播播 | 国产一区二区三区三州 | 国产精品视频在线观看 | 日本美女黄视频 | 青青草手机在线 | 天天爽夜夜爽视频 | 中文字幕首页 | 激情女主播 | 日韩欧美视频网站 | 欧美第一精品 | 一级特黄视频 | 国产最新视频在线 | 一区二区三区波多野结衣 | 国产精品成人在线 | 91 在线观看 | 久久成人视屏 | 中文一级片 | 天堂网www| 亚洲成人av免费 | 手机在线一区二区 | 国产精品jizz在线观看软件 | 丰满人妻中伦妇伦精品app | 色综合视频 | av网站亚洲| 久久特黄 | 今天高清视频在线观看视频 | 欧美与黑人午夜性猛交久久久 | www.久久久 | 欧美丝袜一区二区三区 | 中文字幕av观看 | 国产精品麻豆成人av电影艾秋 | 欧美变态视频 | 国产乱妇4p交换乱免费视频 | 二区中文字幕 | 日本啪啪片 | 伊人伊人伊人伊人 |