游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

SpringCloudStream使用详解及部分重点源码分析

  环境:Springboot2。3。12。RELEASESpringCloudHoxton。SR12RabbitMQ3。8。12简介
  SpringCloudStream是一个框架,用于构建与MQ连接的高度可伸缩的事件驱动微服务。其目的是为了简化消息在SpringCloud应用程序中的开发。屏蔽了各种MQ之间的差异,使得在更换MQ的时候不需要修改代码。
  SpringCloudStream支持多种绑定器实现,如下:RabbitMQApacheKafkaKafkaStreamsAmazonKinesisGooglePubSub(partnermaintained)SolacePubSub(partnermaintained)AzureEventHubs(partnermaintained)AWSSQS(partnermaintained)AWSSNS(partnermaintained)ApacheRocketMQ(partnermaintained)
  详细查看官方文档,对应每一个MQ都有一个Github地址。
  SpringCloudStream的核心构建块是:目标绑定器(DestinationBinders):负责与MQ集成的组件。目标绑定(DestinationBindings):MQ中间件与最终用户提供的应用程序代码(生产者消费者)之间的桥梁。消息(Message):生产者和消费者用来与目标绑定器(以及通过MQ与其他应用程序)通信的规范数据结构。
  Stream核心组件关系图快速入门
  依赖:propertiesspringcloud。versionHoxton。SR12springcloud。versionpropertiesdependenciesdependencygroupIdorg。springframework。bootgroupIdspringbootstarteramqpartifactIddependencydependencygroupIdorg。springframework。cloudgroupIdspringcloudstarterstreamrabbitartifactIddependencydependenciesdependencyManagementdependenciesdependencygroupIdorg。springframework。cloudgroupIdspringclouddependenciesartifactIdversion{springcloud。version}versiontypepomtypescopeimportscopedependencydependenciesdependencyManagement
  应用配置:spring:rabbitmq:host:localhostvirtualhost:busport:5672username:xxxpassword:xxxspring:cloud:stream:bindings:自定义输入输出myInput:指定输入通道对应的主题名destination:demomyOutput:destination:demo
  创建消息通道绑定的接口:publicinterfaceStreamBinding{StringINPUTmyInput;StringOUTPUTmyOutput;Input(StreamBinding。INPUT)SubscribableChannelinput();Output(StreamBinding。OUTPUT)MessageChanneloutput();}
  通过Input和Output注解定义输入通道和输出通道名称,这里的名称与上面配置文件中的是对应的。
  当定义输出通道的时候,需要返回MessageChannel接口对象,该接口定义了向消息通道发送消息的方法;定义输入通道时,需要返回SubscribableChannel接口对象,该接口集成自MessageChannel接口,它定义了维护消息通道订阅者的方法。
  这里的Input,Output两个方法容器会分别创建一个Bean对象
  创建消费者:ComponentEnableBinding(value{StreamBinding。class})publicclassStreamReceiver{privateLoggerloggerLoggerFactory。getLogger(StreamReceiver。class);StreamListener(StreamBinding。INPUT)publicvoidreceive(Stringmessage){logger。info(接收到消息:{},message);}}
  EnableBinding注解用来指定一个或多个定义了Input或Output注解的接口,以此实现对消息通道(Channel)的绑定。上面我们通过EnableBinding(value{StreamClient。class})绑定了StreamClient接口,该接口是我们自己实现的对输入输出消息通道绑定的定义
  StreamListener,主要定义在方法上,作用是将被修饰的方法注册为消息中间件上数据流的事件监听器,注解中的属性值对应了监听的消息通道名。上面我们将receive方法注册为myInput消息通道的监听处理器,当我们往这个消息通道发送信息的时候,receiver方法会执行。
  消息发送接口:ResourceprivateStreamBindingstreamBinding;GetMapping(send)publicvoidsend(){streamBinding。output()。send(MessageBuilder。withPayload(FirstMessage。。。)。build());}
  启动服务:
  查看RabbitMQ
  自动为我们创建了一个队列,队列的名称是以我们在配置文件中配置的开头,后面是随机生成的。这个队列会自动删除AD,服务关闭后就自动删除队列;Excl:排他的,存在该队列就不会在创建了。
  修改端口后,再启动一个服务:
  创建了2个队列,使用其中一个发送消息:
  两个服务都收到了消息。消费者组
  上面启动了2个服务都能收到消息,在集群的环境下这样肯定会带来问题,如果是业务方面的就会出现重复数据,这时候我们可以通过设置分组的解决此问题。修改配置:spring:cloud:stream:bindings:myInput:指定输入通道对应的主题名destination:demo指定一个组;指定分组以后,不管你启动多少个实例,所有的实例都监听这一个队列多个实例会轮询的接收消息group:gtestmyOutput:destination:demo
  再次启动服务后,两个服务会轮询的接收到消息。
  启动服务后,两个服务都同时监听同一个队列。队列也不是随机生成的了,并且队列是持久化的,服务断开后队列也不会自动删除。消息分区
  通过消费组的设置,虽然能保证同一消息只被一个消费者进行接收和处理,但是对于特殊业务情况,除了要保证单一实例消费之外,还希望那些具备相同特征的消息都能被同一个实例消费,这个就可以使用SpringCloudStream提供的消息分区功能。修改配置spring:cloud:stream:bindings:myInput:指定输入通道对应的主题名destination:demo指定一个组;指定分组以后,不管你启动多少个实例,所有的实例都监听这一个队列多个实例会轮询的接收消息group:gtestconsumer:通过该参数开启消费者分区功能partitioned:truemyOutput:destination:demoproducer:这里的配置也可以是SpEL表达式,比如:headers〔partition〕通过消息header获取属性这里会通过表达式及消息对象进行计算得到一个Key,然后获取key的hashCode得到hashCode以后会与partitionCount进行取模运算得到具体的分区partitionKeyExpression:1我这里给的值就是对应的instanceIndex的值,你希望谁接收就设置谁配置的值即可partitionCount:2实例总数instanceCount:2该参数设置了当前实例的索引号,从0开始instanceIndex:0
  计算分区源码:
  最后得到分区信息后会在消息头中放入一个scstpartition为key,partition为值的头信息。
  启动多个实例后,测试发现所有的消息都只是同一个实例收到消息
  交换机分别与每一个服务进行绑定使用不同的RoutingKey这样在发送消息的时候就可以根据计算处理的分区进行定向发送消息了。
  通过源码查看:
  这里通过我们的配置交换机为demo。接着是获取路由key了
  这里会从消息header中获取keyscstpartition的头信息。
  这样针对使用RabbitMQ的中间件发送消息所需要的交换机及路由key就确定下来了。
  完毕!!!
  在SpringCloud中你还在使用Ribbon快来试试LoadBalancer
  SpringCloudGateway应用详解1之谓词
  SpringCloudBus使用说明详解
  SpringCloudNacos整合feign
  SpringCloudAlibaba之Nacos服务
  SpringCloudSentinel整合Feign
  SpringCloudHystrix实现资源隔离应用
  SpringCloudzuul动态网关配置
  SpringCloud微服务日志收集管理ElasticStack完整详细版
  SpringCloudFeign实现原理源分析
  SpringCloudSentinel热点参数限流

不如我们今天见不如我们今天见《小橙唠唠》第94篇品冠跟信你的脸定格那年那天的道别,改天见,变成古老神秘的誓言。当时我们彻夜谈天,如今只剩只字片言,嘘寒问暖……吸毒男星高调复出拿影帝,14亿网友滚这可能是2022年最魔幻的事昔日吸毒坐牢的劣迹艺人,如今摇身一变成了影帝。最近,昔日的某个吸毒明星在台北电影节获奖了。一边惊讶于台湾的宽容度,一边又对微博下面的评论……创造游戏王卡片的贝卡斯,为何没有青眼白龙,也没有艾克佐迪亚?大家好,这里是逢魔帝骑。今天我们来说一下,为什么在《游戏王》初代动漫之中,创造了游戏王卡片的贝卡斯,卡组里面没有多少罕贵卡的问题。无论是在动漫里面还是现实当中,游戏王的卡……阿里本地生活被曝将开启一轮大裁员,饿了么回应消息不实1月4日,据界面新闻报道,阿里本地生活即将开启一轮大幅裁员,裁员涉及饿了么口碑几乎所有业务线,包括地区分公司人员,不包含第三方骑手。上述报道指出,一位接近饿了么人士向界面新闻记……大S苦尽甘来!三胎流产癫痫复发太心疼,再婚后被具俊晔宠成公主在进行服装搭配的时候,除了要考虑美观时尚效果之外,其实最关键的还是要有足够的舒适效果,毕竟衣服是用来穿的,所以很多基础款的时尚单品比有些走在潮流前线的款式更受欢迎,一来不会过时……原神丐中丐零命万达四命班香全三星武器无药8000分幽浮之海作者:NGA漂泊的诗人BV1EY41187jc算是圆盘活动开始就定下的目标,这段时间尝试下来,打法思路更迭了几次,终于在活动结束前成功了。圆盘buff:交织之……陈伟霆不再隐瞒,他说出与杨颖分开的真实原因,究竟是什么原因?Angelababy常常被传来离异的信息,她自身也是十分的无可奈何,她也想过平淡的生活,可是没有办法,谁让她跟冯绍峰的这一段婚姻生活备受异议呢,实际上Angelababy跟冯绍……年薪400万!韩国34女排老将来中国捞金,却吐槽没有自由太辛北京时间1月5日,上海女排外援金软景在直播时吐槽:在中国打球太辛苦了,连韩国菜都吃不到,每天两点一线,生活太枯燥!对此,韩国媒体也表示:金软景在中国打球除了能够赚钱外,其他的什……20岁30岁40岁的女生该怎么穿?学小敏家就够了周迅和黄磊演的《小敏家》你们看了吗?今天刚好是大结局了。我对中年爱情故事不感冒,剧情也实在狗血,但它最吸引我的就是剧里4位女演员的穿搭。40多岁的刘小敏和李萍、30多岁的……欧文归队就是杜兰特的福星?全力冲击MVP,要夺第三冠没他真不日前,有消息称有着冠军后卫头衔的欧文,本赛季首次参加了队内的合练,据悉,依照规定欧文有资格参加余下赛季的22场客场比赛,其中,备受关注的非首秀莫属了(1月5日对阵步行者队,或是……杨幂新剧又吹了,接二连三的溜粉,伤不起杨幂真的是很火热的体质,走到哪里不管做什么事都能引起关注,别人都是拿钱买热搜,她是随随便便就可以上热搜,之前宣传的轰轰烈烈的《藏娇》,会由杨幂担任女主,投资方也非常的看重她,没……小米12SPro评测体验均衡的实力派影像旗舰在7月20日,雷军正式发布了全新的小米12S系列,其中小米12SUltra凭借强大的影像实力奠定了小米在移动影像领域的地位。当然,除了超大杯之外,小米12SPro也是非常值得关……
小说最好的爱情(完结)你有没有遇上一种情感,不浓烈,不痴狂,仿佛像是山间的水流,春日的微风,枝头飘落的花瓣,丝绸一样轻柔绵密地包围着你,妥帖而又旖旎。你有没有遇上一个人,安静沉默,温柔细腻,不……还觉得自己的网速龟速吗?全球宽带网速摩纳哥第一,中国第六!【全球宽带网速摩纳哥最快,中国位居第六】曾几何时,电脑前的你望着慢慢挪行的进度条或是不断转动的小圆圈,咬牙切齿,拍桌子、踢板凳?随着我国的电信网络发展,家庭接入网线……在旅行中,我遇到的那些可爱的小动物们今天想分享的是我在旅行中遇到过的那些小动物们。其中一部分是在自驾途中偶遇的,一部分是特定旅行目的地遇见的。无论是哪种,都为旅途增添了许多趣味。先来分享一下在路……硬刚红米!全球首台240W快充手机,太炸了在开始今天的文章之前,懂哥先做一个小调查。小伙伴们现在手头上正在用的主力机,电池的快充功率都是多少瓦的呀?懂哥猜啊,慢一点的有几十瓦,快一点估计上百瓦,超快级别的也……有一说一,原神中命最硬的,应该就是旅行者了吧虽说命硬不硬这种事情非常玄学,但在原神里那可是却有其事的。在此基础上我们再看,原神中的一般人,那命就是没有爷硬。这或许就是主角光环的一种,也有可能是因为爷是外来之人,不受提瓦特……新能源汽车的中场战事充电桩剩者为王人生若只如初见,何事秋风悲画扇。8月31日,港交所文件显示,巴菲特旗下伯克希尔哈撒韦公司在8月24日出售了133万股比亚迪H股,涉资近3。7亿港元,并打响了狙击新能源汽车……两款大动力电动车来袭,提速快,爬坡有劲,续航里程远近两年,在选择电动车时,很多用户都在担心这个问题,那就是很多车型虽然外形炫酷,但实际续航及动力表现不尽人意。对此,今天来带大家看两款兼顾动力及续航的新电动车。1、本铃T1……江苏男子到东北朋友家做客,菜上桌一脸懵,东北人冬天只吃白菜?冬天的蔬菜品种相对来说要比其他季节的少一些,现在有了蔬菜大棚,状况有所改善,但在寒冷的东北,蔬菜还是以白菜萝卜为主。每年冬季,东北人囤白菜都是几百斤甚至上千斤,白菜作为蔬……干掉重复代码,这三种方式绝了软件工程师和码农最大的区别就是平时写代码时习惯问题,码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码。业务同学抱怨业务开发没有技术含量,用不到设计模式、……教给孩子区分好朋友和同班同学2022育儿季孩子放学回家闷闷不乐,问其原因,某某不喜欢我,不跟我一起玩。听到这话,我们心里不是滋味,你是不是会跟孩子说那你也不跟他玩你就自己玩。但是有没有想过这句话会让……景杰生物IPO蛋白质组学贡献7成收入,押注抗体试剂产销率不足乐居财经刘治颖12月2日,杭州景杰生物科技股份有限公司(以下简称:景杰生物)发布首次公开发行股票并在创业板上市招股说明书(申报稿)。2019年至2022年6月,该公司营业……震怒!韩国短道再次爆发性暴力丑闻,40岁教练涉嫌猥亵未成年弟北京时间12月7日,据韩国媒体报道,韩国短道速滑再次爆发性暴力丑闻,引发网友们强烈关注。据报道,韩国青少年短道速滑教练A某因涉嫌猥亵未成年弟子并非法拍摄,正在接受警方调查……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网