范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

RabbitMQ通信模型之发布订阅模型

  发布订阅模型
  发布订阅模型(Publish/Subscribe):简单的说就是队列里面的消息会被多个消费者同时接受到,消费者接收到的信息一致。
  发布订阅模型适合于做模块之间的异步通信。
  适用场景发送并记录日志信息  springcloud的config组件里面通知配置自动更新  缓存同步  微信订阅号  演示
  生产者  public class Producer {     private static final String EXCHANGE_NAME = "exchange_publish_1";      public static void main(String[] args) throws IOException, TimeoutException {         Connection connection = ConnectionUtils.getConnection();         Channel channel = connection.createChannel();         // 声明交换机         channel.exchangeDeclare(EXCHANGE_NAME, "fanout");         // 发送消息到交换机         for (int i = 0; i < 100; i++) {             channel.basicPublish(EXCHANGE_NAME, "", null, ("发布订阅模型的第 " + i + " 条消息").getBytes());         }         // 关闭资源         channel.close();         connection.close();     } }
  消费者  // 消费者1 public class Consumer {     private static final String QUEUE_NAME = "queue_publish_1";     private static final String EXCHANGE_NAME = "exchange_publish_1";      public static void main(String[] args) throws IOException, TimeoutException {         Connection connection = ConnectionUtils.getConnection();         Channel channel = connection.createChannel();         // 声明队列         channel.queueDeclare(QUEUE_NAME, false, false, false, null);         // 声明交换机         channel.exchangeDeclare(EXCHANGE_NAME, "fanout");         // 将队列绑定到交换机         channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "");         DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {             @Override             public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {                 System.out.println("队列1接收到的消息是:" + new String(body));             }         };         channel.basicConsume(QUEUE_NAME, true, defaultConsumer);     } } // 消费者2 public class Consumer2 {     private static final String QUEUE_NAME = "queue_publish_2";     private static final String EXCHANGE_NAME = "exchange_publish_1";      public static void main(String[] args) throws IOException, TimeoutException {         Connection connection = ConnectionUtils.getConnection();         Channel channel = connection.createChannel();         // 声明队列         channel.queueDeclare(QUEUE_NAME, false, false, false, null);         // 声明交换机         channel.exchangeDeclare(EXCHANGE_NAME, "fanout");         // 将队列绑定到交换机         channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "");         DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {             @Override             public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {                 System.out.println("队列2接收到的消息是:" + new String(body));             }         };         channel.basicConsume(QUEUE_NAME, true, defaultConsumer);     } }
  测试
  先启动2个消费者,再启动生产者
  可以看出来消费者1和消费者2接收到的消息是一模一样的 ,每个消费者都收到了生产者发送的消息;
  发布订阅模型,用到了一个新的东西-交换机,这里也解释一下相关方法的参数:  // 声明交换机 channel.exchangeDeclare(EXCHANGE_NAME, "fanout");  // 该方法的最多参数的重载方法是: Exchange.DeclareOk exchangeDeclare(String exchange,                                     BuiltinExchangeType type,                                     boolean durable,                                     boolean autoDelete,                                     boolean internal,                                     Map arguments) throws IOException;  /**  *  param1:exchange,交换机名称  *  param2:type,交换机类型;直接写 string效果一致;内置了4种交换机类型:  *   direct(路由模式)、fanout(发布订阅模式)、  *   topic(topic模式-模糊匹配)、headers(标头交换,由Headers的参数分配,不常用)  *  param3:durable,是否持久化交换机   false:默认值,不持久化  *  param4:autoDelete,没有消费者使用时,是否自动删除交换机   false:默认值,不删除  *  param5:internal,是否内置,如果设置 为true,则表示是内置的交换器, 客户端程序无法直接发送消息到这个交换器中, 只能通过交换器路由到交换器的方式  false:默认值,允许外部直接访问  *  param6:arguments,交换机的一些其他属性,默认值为 null  */ // 将队列绑定到交换机 channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ""); /**  *  param1:destination,目的地,队列的名字  *  param2:source,资源,交换机的名字  *  param3:routingKey,路由键(目前没有用到routingKey,填 "" 即可)  */ 小结
  本文到这里就结束了,介绍了RabbitMQ通信模型中的发布订阅模型,适合于做模块之间的异步通信。

Steam大量低价区游戏价格上涨,涨价潮来临?去年Steam更新地区定价建议策略后,就陆续有一些游戏开始在不同地区涨价。最近就有一大批游戏纷纷开始采取行动。有的是调高了阿根廷区土耳其区的定价,还有的也调高了包括steam国区在小米13Ultra新机强劲曝光,小米12沦百元机改写超低价历史曝光小米13Ultra搭载华星光电2KOLED的可能性很大,上一次出现类似情况还是小米10Pro和10Ultra,但当时的国产屏素质相比三星E3几乎全方位落后,而今年情况好了许多,比亚迪1月新能源汽车销量15。13万辆同比增长62。442月1日晚间,比亚迪披露产销快报显示,1月新能源汽车销量15。13万辆,同比增长62。44。公告显示,2023年1月新能源汽车动力电池及储能电池装机总量约为8。148GWh,202沙特阿美或牵手吉利,石油巨头能源转型加速!据路透社1月17日报道,三位知情人士表示,吉利控股集团与雷诺汽车正在努力敲定一项协议,引入石油巨头沙特阿美作为投资者和合作伙伴,在双方合资的动力总成公司中持有至多20股份,开发和供曾游记逛美术馆,在齐白石数字展体验人在画中游视频加载中华声在线全媒体见习记者曾冠霖实习生宋科铖你有没有被湘江边上的这一抹朱红吸引?这里是湖南省美术馆,跟我来感受视觉和精神的盛宴吧!现在这里有三大展览,适合约上好友一起观展。进西媒北约十年前已在打造乌克兰军事强国参考消息网2月3日报道西班牙世界秩序网站1月29日刊发一篇文章,题为北约如何将乌克兰打造为世界军事强国之一,作者是阿尔瓦罗德阿圭列斯。文章编译如下当俄罗斯在2022年2月对乌克兰发扬州戴某出轨后,韦某被免职,戴某被免职了吗?调查是否已终止?自从扬州女干部婚房出轨事件曝光以后,扬州市委第一时间就介入处理,并在三天后公布结果对涉事双方戴某韦某建议免职处理。在调查之后发现网传之事基本属实,只是这位副市长并不是张某涛,而是淮红网夜读丨做一个有教养的人用声音传递温暖,欢迎收听红网夜读,我是田萌,田野的田,萌芽的萌。陈道明说一个有教养的人,从不给别人添麻烦,不开过火的玩笑,不消遣他人的不幸,不显摆自己的优越。一个有教养的人,从来都小儿行为测听中的影响因素及应对策略选自中国听力语言康复科学杂志2021年(第19卷)第1期听力学是一门迅速发展的交叉学科,是研究生理病理状态下的听觉功能和听力障碍康复的科学,其核心是听力检测技术。近年来,临床听力学三胎后,发现私密处开口由3指变成5指,怎么办?粉丝故事苗苗今年28岁,是一位有着三个孩子的母亲,生活充满着快乐和幸福。然而,最近,她发现自己的私密处开口已经由原来的3指变成了5指,这让她非常苦恼,甚至有些害怕。苗苗知道,这是因私生子也能落户了?四省份放宽生育登记,非婚生育都能落户面对日益严峻的人口形势,多个省份开始从生育登记上放宽限制,继续加大力度鼓励生育。四省份放宽生育登记早在2022年4月13日,福建就颁布放宽生育登记办法,根据规定,未办理结婚登记的,
CBA消息!亚当斯加盟福建,李春江帅位稳固,高诗岩丛明晨难受CBA第一阶段临近尾声,比赛对比上赛季精彩很多,同时场外的资讯同样丰富。首先是亚当斯正式加盟福建!根据媒体人半神半卡特透露据我了解,达柳斯亚当斯已经与福建队达成协议,他将成为福建队大衣哥经纪人称陈萌没怀孕,朱小伟到医院查体,听到结果心情沉重众所周知,陈萌在社交账号上晒出孕检照片已经有段时日了,怀孕多月的陈萌却没有显孕肚,一直都保持瘦弱的体型,甚至体重才不过94斤重,身上也没有赘肉,不像是有双胞胎身孕的孕妇。近期,大衣聆听自然的声音秦皇岛迎来最佳观鸟季大美秦皇岛奋进新时代这么近那么美周末到河北头条带你乐享河北秋季是候鸟迁徙的高峰期,数以亿计的候鸟从繁殖地飞往越冬地。此时,北戴河鸽子窝大潮坪的高空湿地遍布鸟儿的身影,构成了海岸线一父母离婚后隔空给甜馨庆十岁生日,学妈妈浓妆艳抹,在爸爸那撒娇现在娱乐八卦圈前所未有的清静,少了明星分分合合的炒作,以及为情为爱的互撕互怼,更多是一些明星的影视作品戏里戏外的炒作宣传,一些没有作品的明星,偶尔也会因为自己过生日或者子女过生日被A股光伏储能未来方向,这10只低价股潜力无限建议收藏光伏储能众所周知,丰富的太阳能可以说是取之不尽用之不竭的,光伏的出现对人们百利而无一害,但是光伏发电受制于,供需时间,天气,自然环境的影响,这样一来,储能便是光伏或者其他风电新能源古代的宗族制度决定了姑父与姨夫的不同是的,姑父,用的是父亲的父。而姨夫,则是丈夫的夫。按说,这两个亲戚在血缘上都是一样远近,那区别在哪儿呢?这是因为我们常常所说的亲戚,在古代其实是两个概念,即内亲和外戚。姑姑是父亲这行业观察丨酒水行业在电商媒体中求破局近年来,疫情给各行各业都带来了一定程度的冲击,与此同时,也在危机中催生出了新消费场景,互联网电商已成为疫情时代多数行业的突破口。互联网经济摆脱了地域的限制,重构了人货场的逻辑,更是媒体称李佳琦双11预售首日卖出215亿,工作人员辟谣该数据不实,没有任何相关依据,已发律师函给相关媒体10月25日,据财联社报道,有媒体报道称,预售首日,李佳琦直播间GMV(GrossMerchandiseVolume,商品交易总额)达到了215亿元。对此,美腕工作人员回应称该数据恭喜,终于离婚啦真不是看人离婚就想恭喜。但今天这个离婚瓜,作为旁观者都真心想替女主角庆祝一下解脱。但凡稍微了解一点男主角的精神状态,吃过这段14年婚姻里的狗血瓜,谁都得说一句早该散了叭?来完整吃个三国杀斗地主遇到顶级菜刀没有一点办法?刷好这些牌提升胜率在以前斗地主的农民普遍胜率偏高,而随着各种顶级菜刀武将的不断推出,平民武将作为农民的胜率也是一跌再跌,这些输出型武将最擅长的就是开局直接秒杀一个然后进入单挑用强度来碾压,这种情况下三国杀年度最佳福利,肝日常领强将!这个活动千万不要错过要说三国杀移动端近期的大动作,谋攻篇武将的陆续上线绝对不容错过,这些武将不仅应用了新机制,强度也都不俗,绝对是近期的热点。伴随着新扩展包一起上线的还有堪称重磅活动的群英绘壁,只要做