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

SpringBoot集成应用RocketMQ的集成用法(上)

  1。RocketMQ集成介绍
  在金融互联网领域广泛应用,在阿里双11活动经历过多次考验,经过严苛的生产验证,有比较高的可靠性,在数据处理上有比较高的稳定性,能从最大程度上保证消息不易丢失,如果业务上有一定的规模,且对数据的一致性,稳定性要求严苛,那么可以采用RocketMQ,比如金融互联网领域,支付场景、交易场景等。如果有借助消息队列实现分布式事务,RocketMQ可以作为首选。
  SpringBoot官方提供了springbootstarteractivemq对ActiveMQ的支持,但并没有提供对RocketMQ的支持,这不代表SpringBoot本身不支持,RocketMQ官方给我们提供了RocketMQSpring框架,整合了RocketMQ与SpringBoot,主要提供3个特性:使用RocketMQTemplate用来统一发送消息,包括同步、异步发送消息和事务消息RocketMQTransactionListener注解用来处理事务消息的监听和回查RocketMQMessageListener注解用来消费消息2。RocketMQ安装说明
  简要安装说明,详情请参考官方文档:
  1、下载RocketMQ安装文件
  采用其他镜像下载:https:mirrors。cloud。tencent。comapacherocketmq4。3。2rocketmqall4。3。2binrelease。zip
  2、启动NameServernohupshbinmqnamesrvtailflogsrocketmqlogsnamesrv。log
  3、启动Brokernohupshbinmqbrokernlocalhost:9876tailflogsrocketmqlogsbroker。log3。RocketMQ集成配置
  采用RocketMQ官方提供得rocketmqspringbootstarter作为集成组件。
  1、创建springbootmqrocket父级工程
  MAVEN依赖:propertiesrocketmqspringbootstarterversion2。0。3rocketmqspringbootstarterversionpropertiesdependencies!RocketMq与SpringBoot集成组件依赖dependencygroupIdorg。apache。rocketmqgroupIdrocketmqspringbootstarterartifactIdversion{rocketmqspringbootstarterversion}versiondependencydependencies
  2、创建rocketmqbasic工程
  工程依赖直接继承父级依赖,无须添加其他依赖组件。
  工程配置:
  application。yml文件:server:port:12613spring:application:name:rocketmqbasicRocketMQ配置rocketmq:nameserver:10。10。20。15:9876producer:group:basicgroup
  配置填写RocketMQ地址信息,如果是集群,多个以逗号分割。
  3、创建启动类
  com。mirson。spring。boot。mq。rocket。basic。startup。RocketMqBasicApplicationSpringBootApplicationComponentScan(basePackages{com。mirson})publicclassRocketMqBasicApplication{publicstaticvoidmain(String〔〕args){SpringApplication。run(RocketMqBasicApplication。class,args);}}
  扫描包含com。mirson包下所有路径。4。RocketMQ集成之普通消息处理
  1、定义监听器
  com。mirson。spring。boot。mq。rocket。basic。consume。StringConsumer:ServiceRocketMQMessageListener(topicRabbitMqConfig。TOPIC,consumerGroupRabbitMqConfig。CONSUMEGROUPSTRING)Log4j2publicclassStringConsumerimplementsRocketMQListenerString{OverridepublicvoidonMessage(Stringmessage){log。info(StringConsumerreceive:message);}}订阅的主题为RabbitMqConfig。TOPIC,订阅的分组为RabbitMqConfig。CONSUMEGROUPSTRING。实现RocketMQListener接口,将接收的消息通过日志打印。
  2、提供接口
  com。mirson。spring。boot。mq。rocket。basic。provider。RocketMqProviderContorllerRestControllerLog4j2publicclassRocketMqProviderContorller{ResourceprivateRocketMQTemplaterocketMQTemplate;生产者发送字符类型消息returnGetMapping(sendString)publicStringsendString(){Stringmsgrandomnumber:RandomUtils。nextInt(0,100);SendstringSendResultsendResultrocketMQTemplate。syncSend(RabbitMqConfig。TOPIC,msg);log。info(sendresult:sendResult。getSendStatus());returnmsg;}。。。}
  提供sendString接口,每次请求发送一个随机数,通过RocketMQTemplate的syncSend同步方法发送数据。
  如果发送成功,会返回状态:SENDOK。
  3、调用验证访问接口地址:http:127。0。0。1:12613sendString
  查看监听器日志
  可以看到,String类型的普通消息监听器,正常接收到消息。
  5。RocketMQ集成之原生消息处理
  RocketMQ原生消息,除了发送的数据,还可以获取RocketMQ内置的系统信息,比如消息ID,主机名称,时间戳,队列信息等。
  1、定义监听器
  com。mirson。spring。boot。mq。rocket。basic。consume。MessageExtConsumerServiceRocketMQMessageListener(topicRabbitMqConfig。TOPICEXT,selectorExpressiontag1,consumerGroupRabbitMqConfig。CONSUMEGROUPEXT)Log4j2publicclassMessageExtConsumerimplementsRocketMQListenerMessageExt,RocketMQPushConsumerLifecycleListener{OverridepublicvoidonMessage(MessageExtmessage){log。info(MessageExtConsumerreceivemsgId:{},msgData:{},message。getMsgId(),newString(message。getBody()));}自定义消费者的开始位置,这里设置的是当前时间paramconsumerOverridepublicvoidprepareStart(DefaultMQPushConsumerconsumer){setconsumerconsumemessagefromnowconsumer。setConsumeFromWhere(ConsumeFromWhere。CONSUMEFROMTIMESTAMP);consumer。setConsumeTimestamp(UtilAll。timeMillisToHumanString3(System。currentTimeMillis()));}}订阅的主题为RabbitMqConfig。TOPICEXT,订阅的Group为RabbitMqConfig。CONSUMEGROUPEXT。打印接收到的消息ID与数据。实现RocketMQPushConsumerLifecycleListener接口,可以自定义消费者的开始消息位置,这里设置的是当前时间。
  2、提供发送接口
  com。mirson。spring。boot。mq。rocket。basic。provider。RocketMqProviderContorller,增加接口:发送RocketMQ原生消息returnGetMapping(sendStringExt)publicStringsendStringExt(){Stringmsgrandomnumber:RandomUtils。nextInt(0,100);try{SendResultresultrocketMQTemplate。syncSend(RabbitMqConfig。TOPICEXT:tag1,msg);log。info(result:result。getSendStatus());}catch(Exceptione){log。error(e。getMessage(),e);}SendStringExtMessagereturnmsg;}发送一个随机数,增加了一个tag1标记,与上面RocketMQMessageListener注解中的selectorExpression需保持一致,如不匹配,不能收到对应消息。与正常发送方式没有差异,不需做额外处理,仍采用同步方式发送。
  3、测试验证访问接口:
  http:127。0。0。1:12613sendStringExt
  查看监听器日志
  6。RocketMQ集成之SpringMessage消息
  SpringMessage是一种消息传输规范,RocketMQ可以支持,在SpringCloudStream中采用的就是SpringMessage作为消息传输规范,这是一个用于构建基于消息的微服务应用框架。
  1、定义传输对象
  在实际消息交互当中,不会传输简单的数据结构,一般传递的是业务对象,这里定义一个订单对象:
  com。mirson。spring。boot。mq。rocket。basic。bo。OrderDatapublicclassOrderimplementsSerializable{privatestaticfinallongserialVersionUID1L;订单IDprivateStringorderId;创建时间privateDatecreateDate;}
  消息交互当中,默认会通过序列化传递,需要实现序列化接口。
  2、定义监听器
  com。mirson。spring。boot。mq。rocket。basic。consume。OrderSpringMessageConsumerServiceRocketMQMessageListener(topicRabbitMqConfig。TOPICSPRINGMESSAGE,consumerGroupRabbitMqConfig。CONSUMEGROUPSPRINGMESSAGE)Log4j2publicclassOrderSpringMessageConsumerimplementsRocketMQListenerOrder{OverridepublicvoidonMessage(Orderorder){log。info(OrderSpringMessageConsumerreceiveorder:order);}}定义不同的主题以区分,这里订阅的主题为RabbitMqConfig。TOPICSPRINGMESSAGE,组别为RabbitMqConfig。CONSUMEGROUPSPRINGMESSAGE。实现RocketMQListener接口,泛型为Order;打印接收到的订单数据。
  3、定义发送接口
  com。mirson。spring。boot。mq。rocket。basic。provider。RocketMqProviderContorller发送RocketMQSpringMessage封装消息returnGetMapping(sendSpringMessage)publicStringsendSpringMessage(){Stringmsgrandomnumber:RandomUtils。nextInt(0,100);OrderordernewOrder();order。setOrderId(UUID。randomUUID()。toString());order。setCreateDate(newDate());SendSpringMessageWithOrderSendResultresultrocketMQTemplate。syncSend(RabbitMqConfig。TOPICSPRINGMESSAGE,MessageBuilder。withPayload(order)。build());log。info(sendresult:result。getSendStatus());returnmsg;}创建一个订单对象,生成UUID作为订单ID,设置订单创建时间。采用同步方式发送,指定主题RabbitMqConfig。TOPICSPRINGMESSAGE,注意,SpringMessage封装采用MessageBuilder,将订单放入playload包体里面,调用build方法进行序列化。
  4、测试验证调用发送接口
  http:127。0。0。1:12613sendSpringMessage
  查看监听器日志
  能够正常接收并打印出完整的订单数据。

中象协成立60周年最有影响力对局91966年个人赛胡荣华先胜入选理由:胡荣华对传统顺炮布局作出了重大改进,双正马战术极大地丰富了这一布局体系,并一直流行至今。1。炮二平五胡荣华首创的新创获于1966年首次在全国大赛中试用,取……俗话儿子像娘,金砖砌墙女儿像老子,反穿皮袄子是啥意思?几乎所有的年轻夫妻在体验过初为父母的喜悦之后,最关心的就是自己的小宝宝更像爸爸还是妈妈的问题了。由于遗传和基因的原因,孩子的长相和脾气性格的确会和父母其中一个人十分相似,也有的……这些东南亚美食好吃到爆炸,看看你都吃过哪些?东南亚一众国家如泰国、越南、印尼、马来西亚、马尔代夫等等成为国人出行目的地新宠,除了风景、性价比等关键词外,还有符合我们大吃货帝国国人们的美食。就算在中国,吃食那也是百里……达万猜挤兑彼得莫拉克除了苏波邦,别人都没威胁达万猜PK。善猜(TawanchaiPk。Saenchai)在近日的采访中表示:除了苏波邦(SuperbonSinghaMawynn)以外,任何人都对我构不成威胁。考虑到目前O……双厨狂喜!继拉饥联动后,元气骑士重生细胞也携手来袭大家好!我是元气老骑士:元气宅。随着科技的进步移动设备的飞速发展,越来越多的游戏制作厂商早已经不再局限于PC、主机这种单一的领域,而是将目光放在了那个充满了更多机遇、更多……冬季养生食物养护肠胃,疏通血管,气色好如今我们告别了大雪,进入了深冬的怀抱,在这种温度较低的季节里,大家一定要注意养生,保重身体,平时一定要按时吃饭,加强自身锻炼,不要给疾病留下可乘之机。除此之外,进入冬天,人体的……上了年纪要忌茶?建议人过中年牢记2喝3不喝,对身体有益处3月底,武汉的春天温度还是比较高的,都快赶上夏天的气温了,爸妈也不在家里吃早点了,早早出门锻炼身体、去美食街吃早餐、去菜市场买菜,可能是热干面蛋酒太好吃、可能是天气适宜、也可能……小技巧手机如何开启地震预警?四川的小伙伴可能收到了这样一则消息。这,就是很多手机内置的地震预警功能。它可以在地震波到达当地之前发出预警,帮大家争取一定的避难时间。虽然以秒为单位,但仍旧非……战狼2不为人知的幕后故事,吴京抵押房产,开拍前才请卢靖姗文紫依这年头,一个武打明星想凭借一身武艺在娱乐圈里站稳脚跟,而不只是做一个武替,或者拍功夫片而已,那么他一定要有自己的特色。有一个人,他在主旋律军旅题材领域,留下了……放假仅1个月,杨倩脸胖了一圈!放弃身材管理,仍获评最美大学生日前,奥运冠军杨倩亮相北京冬奥会倒计时100天的特别节目,并再次登上了热搜,原因是她晒出了和众多歌星,以及许海峰的合影,着实令人羡慕。同时,杨倩还拍摄了为北京冬奥倒计时的短片,……张艺谋3000万急售别墅,以6100万卖给圈内人,妻子陈婷只在7月11日,据媒体称,知名导演张艺谋将要急售位于无锡的豪宅,并且售价远远低于市场价,网友们对此议论纷纷:张艺谋难道是缺钱了吗?都到了要变卖房产的地步?根据房产中介透露,……遇一生挚爱,爱一人永恒,远方的你,是我千生百世的念想你就像春天的一缕清风,轻轻吹过我的心海,吹散了我心间的阴霾。你就像陌上的花开万里,静静地绽放于我的世界,抚慰了我灵魂的孤独。你的到来,让我看到了世界的美好,让我体会……
真正厉害的女人,往往都很安静周国平说:人生的使命就是把生命照看好,把灵魂安顿好。人生最好的境界是丰富的安静。可是生活中,总有一些女人活得很焦躁,但凡有点事情都要体现在言语中。或许在她们心……真的来了!2023款别克GL8曝光,够年轻够运动,埃尔法也是在国内市场燃油的MPV当中,别克GL8的地位非常稳固,而近日全新的2023款别克GL8概念车正式曝光,这款车型定位为新能源和混动系列,整体的外观与燃油版本的别克GL8区别非常大……说服自己苍穹之上,月光朦胧,星星早已不见,似乎那个月朗星稀的日子很久没有体会了。活了这么多年,终于感悟到一个道理:企图说服别人是十分愚蠢的行为。别说说服别人难,就是说服自己,接受……休斯顿世乒赛最新战况1、在男女混双跨国搭配王曼昱卡奈科,林高远高安,均已3:0横扫对手顺利晋级下一轮。2、男单王楚钦在前两局均以大比分2:0顺利拿下对手,在第三句对手有些反扑,一……胡润慈善榜刘强东捐赠149亿成首善,粤商上榜人数最多退居幕后不久的三位互联网大佬包揽慈善榜前三名。11月16日,胡润研究院发布《2022慈善榜》,前三位均来自互联网头部企业,且捐赠额都在150亿元左右。刘强东以149亿元捐赠额首……心里难过时发的一些文案,深情催泪,一秒戳中泪点你说要敬往事一杯酒,再爱也不回头。实际上就算你醉到黄昏独自忧,如果那个人伸出双手,你还是会跟他一起走吗。合适的鞋,只有脚才知道;合适的人,只有自己知道。走千条路,只一条路……一加有多卷?一加BudsPro2再升级,汉斯季默调音上线!2月7日晚,在一加的海外新品发布会上,一加带来了诸多让人眼前一亮的新品,像此前在国内备受好评的tws耳机一加BudsPro2正式在海外发布,值得一提的是,这次一加还带来了全新的……睡到半夜,总觉得口苦干燥难以入睡?不能排除这4个问题保持健康的人睡眠质量高,通常一觉睡到天亮,并不会在睡觉过程中身体有不良症状,但是,有部分人睡到半夜有不适感,经常口苦,口腔干燥,进而降低睡眠质量,有时会从半夜醒过来,需要……炼金龙魂要回归?Riot无意间透露S13的一些改动信息,它要RiotGames在最近错误地透露了英雄联盟第13季(S13赛季)的一个变化。一份声明中提到了炼金龙,并确认了玩家最担心的回归。炼金龙英雄联盟历史的一部分,当然也是玩家最……37岁的C罗,为什么在今年转会市场无人问津?C罗在今年的夏季转会窗,一度传出要离队的新闻,无外乎是为了继续能够呆在欧冠区的球队,继续刷新自己的欧冠进球数。但是其经纪人门德斯在欧洲足坛推销一圈以后,却没有什么球队愿意接手,……勇士赚大了!收视率飙升挺进西决,连续两轮都在主场晋级5月14日,本赛季NBA季后赛首支晋级西部决赛的球队出炉,勇士主场11096击败灰熊,他们以大比分42晋级西决,接下来的对手是独行侠和太阳之间的胜者,两队鏖战到抢七大战,谁能够……联发科WiFi7完整生态方案即将发布,采用其6nmFilog本文转自:IT之家作者:孤城据联发科官方消息,作为WiFi7技术的首批采用者之一,联发科将在2023年国际消费电子展上首次展示生产就绪的采用下一代无线连接功能的完整生态系……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网