专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

RabbitMq如何实现流量削峰?(一)

  搭建环境:springBootmavenRabbitMQ3。8。14Erlang23。2。7
  注意:安装时rabbitMq和erlang版本号必须对应,以免引起不必要的bug。
  1、应用场景
  应用解耦:当要调用远程系统时候,当存在订单系统和库存系统时,订单系统下单,库存系统需要收到订单后库存减一,这时候如果系统宕机,会造成订单丢失,吧订单消息发入mq,库存系统再去mq消费,就能解决这一问题。异步消费:传统的模式:用户下单邮件发送短信提醒,三个步骤全部完成,才能返回用户消费成功,因为后面两个步骤完全没有必须是当前时间完成,可以用户下单成功后,直接发送给mq,返回给用户消费成功,之后邮件发送和短信提醒,可以其他时间段来消费发送给用户。流量削峰:大型双11活动时候,0点有上亿并发,这时候数据库并不能承载那么大的数据冲击,而专门为高并发设计的mq可以承受住海量的请求,发送给mq,存储成功后,再消费。
  2、流量削峰
  本文主要介绍流量削峰实例,先创建两个表getredpack和sendredpack。
  CREATETABLEsendredpack(idintnotnullAUTOINCREMENT,useridvarchar(32)notnullcomment发红包用户,moneydecimal(10,2)notnullcomment红包金额,unitmoneydecimal(10,2)notnullcomment单个红包金额,totalintnotnullcomment红包个数,remainintnotnullcomment红包剩余个数,senddatedatetimenotnullcomment发红包时间,primarykey(id));INSERTINTOsendredpack(userid,money,unitmoney,total,remain,senddate)VALUES(001,10000。00,10。00,1000,1000,now());CREATETABLEgetredpack(idintnotnullAUTOINCREMENT,useridvarchar(32)notnullcomment抢红包用户,sendredpackidintnotnullcomment发红包记录id,moneydecimal(10,2)notnullcomment抢的红包金额,getdatedatetimenotnullcomment抢红包时间,primarykey(id));
  本人用的是mac电脑brew安装的rabbitMq,启动rabbitMq用brewservicesstratrabbitmq,启动之后访问:http:localhost:15672
  登入的账号密码用guest,登入后可以在admin里面添加一个admin管理员,配置权限,在queues里面创建一个队列redpack,供项目发用户ID到队列中。
  编辑
  编辑上面的流程处理完之后,就可以在springboot项目中引入rabbitMq包,配置文件,及其新建上面表的实体类。
  !rabbitmqdependencygroupIdorg。springframework。bootgroupIdspringbootstarteramqpartifactIddependencyRabbitMqspring。rabbitmq。virtualhostspring。rabbitmq。hostlocalhostspring。rabbitmq。port5672spring。rabbitmq。usernameadminspring。rabbitmq。passwordadmin
  抢红包authorkeyingdate2021622DatapublicclassGetRedpack{privateIntegerid;抢红包用户privateStringuserId;发红包用户privateStringsendRedpackId;抢的红包金额privateBigDecimalmoney;抢红包时间privateDategetDate;}
  发红包authorkeyingdate2021622DatapublicclassSendRedpack{privateIntegerid;发红包用户privateStringuserId;红包金额privateBigDecimalmoney;单个红包金额privateBigDecimalunitMoney;红包个数privateIntegertotal;红包剩余个数privateIntegerremain;发红包时间privateDatesendDate;}
  下面先写provider生产者的代码,进入接口发送红包,发送100个,然后把收红包的用户id发给mq:
  生产者authorkeyingdate2021622RestControllerSlf4jRequestMapping(provider)publicclassProviderController{ResourceprivateRabbitMqServicerabbitMqService;RequestMapping(sendredpack)publicvoidsendRedpack(){for(inti0;i100;i){rabbitMqService。sendRedpack(i);}}}ResourceprivateRabbitTemplaterabbitTemplate;OverridepublicvoidsendRedpack(inti){rabbitTemplate。convertAndSend(redpack,i);}
  然后写消费者代码,用rabbitListener监听queue,队列就是刚刚在mq管路页面创建的redpack,定义的发红包用户为001,为了方便测试,在代码里写死,给消费者的类加一个Component的注解,交给spring容器管理,消费逻辑大致就是:
  1、先查看红包剩余数,大于0则继续,否则结束。
  2、吧红包剩余数1。
  3、抢红包信息存入getredpack表,存储抢红包详情。
  消费authorkeyingdate2021622ComponentSlf4jpublicclassConsumerRabbitMq{ResourceprivateRabbitMqMapperrabbitMqMapper;privatestaticfinalStringsendUserId001;需在RabbitMQ中手动创建redpack队列,否则报错parammessageRabbitListener(queuesredpack)publicvoidgetRedpack(Stringmessage){log。info(接收的消费红包人员:{},message);try{查询红包剩余个数是否大于0intremainrabbitMqMapper。getRemain(sendUserId);if(remain0){扣减红包个数intresultrabbitMqMapper。deleteOne(sendUserId);if(result0){3。新增用户抢红包记录GetRedpackgetRedpacknewGetRedpack();getRedpack。setUserId(message);getRedpack。setSendRedpackId(sendUserId);getRedpack。setGetDate(newDate());getRedpack。setMoney(newBigDecimal(10));rabbitMqMapper。insertGetRedpack(getRedpack);}}异步通知用户抢红包成功}catch(Exceptione){log。error(处理抢单异常:e。getMessage());thrownewRuntimeException(处理抢单异常);}}}
  附上三个sql
  selectidgetRemainparameterTypejava。lang。StringresultTypejava。lang。Integerselectremainfromsendredpackwhereuserid{sendUserId}selectdeleteiddeleteOneparameterTypejava。lang。Stringupdatesendredpacksetremainremain1whereuserid{sendUserId}deleteinsertidinsertGetRedpackparameterTypecom。alibaba。first。model。GetRedpackinsertintogetredpack(userid,sendredpackid,money,getdate)values({userId},{sendRedpackId},{money},{getDate})insert
  重点、重点、重点、注意点事项(重要的事要说三遍),踩坑总结:
  1、安装时候,rabbitMq和erlang版本号对应一致。
  2、springboot集成rabbitMq,guest只能登入localoal,远程ip,需要创建admin用户,用admin用户登入。
  最后,看到这里的读者,喜欢的话安排一波(点赞,收藏,关注),原创不易,每周定期分享编程笔记。

山西惜败山东!杨学增肯定全队,暗指裁判不公,常林为张宁出头在CBA的一场强强对话中,山西男篮118121惜败山东男篮,本场比赛山西男篮在上半场比赛同对手形成了相持,暂时以6167落后山东男篮在进入第三节比赛,山东男篮凭借兰兹伯格的连续得分足球在中国出现了几千年!还有这些古老的体育运动流传至今,你玩过吗2022卡塔尔世界杯足球赛上,晋级球队正追逐生命之杯。足球这项运动在我国由来已久,古代被称为蹴鞠,于2006年入选第一批国家非物质文化遗产名录。国家级非遗项目中,有许多延续千百年的内马尔c罗梅西的八卦私生活以前三个人都是穷小子出生,如今三个人都是闪耀的球星,所以英雄不问出处。在他们告别巅峰的时期,我居然补上了他们的故事。我看过2014年的世界杯,尤其是冠军争夺战,我选了德国队,还记得王晗指导兵行险着,陶汉林一夫当关,威姆斯偶露峥嵘CBA第十四轮,山东男篮迎来山西,两山之战可谓是一触即发,新赛季山东和山西都处在联赛上游,一个是攻防兼备,一个是跑轰大师,另外两队也都是三外援出战,同时多年来,两队的球员交流比较频巴西最有天赋的16岁球员!身价过亿,曾是罗纳尔多的继承人皇家马德里知道,在转会市场上脱手必须快,经过一段时间的接触,战舰官宣布恩德里克。年仅16岁的恩德里克有新大道的外号,被认为是巴西最有天赋的年轻一代选手。据意大利明基罗马诺透露,皇马广东大胜辽宁的同时,这三个细节不容忽视,每一个都极具人情味!大家好,我是璐璐!羊的第三天,转为低烧,喉咙开始剧痛,偶尔咳嗽和出现鼻涕,不过腰痛的现象几乎已经消失,看来距离胜利就只有一步之遥了,加油,为自己加油打气,向极具韧劲的广东队学习!昨乔丹普尔的大合同是勇士王朝坍塌的导火索金州勇士被步行者双杀。目前14胜15负,排名西部第十。总冠军主力框架没有变化,只是走了几个替补,就对总冠军球队的攻防产生如此大的影响吗?如果佩顿二世和波特等有如此大的影响力的话,那CBA16日看点广东对阵大黑马,山东与山西争前三名,上海争6连胜CBA第13轮还剩最后两场比赛,今晚1935,同曦队将对阵天津队,北京队对阵浙江队,目前浙江队依然独孤求败,辽宁队继续稳居第二名,山东队与山西队分列三四名,广东队以一波连胜升入了第轻松搞定家里安防,360云台摄像机8Max入手分享家里是否有必要安装摄像头这个问题真的困惑蛮久,在网上搜索得到的答案也多种多样。最多见就是安全问题,例如家住城中村,人员复杂或者是住在郊区,人迹罕见,需要一个安防摄像头给自己一个安心消息称OPPO将在未来三年给一加单独投入100亿元资金IT之家12月16日消息,据界面新闻,OPPO公司内部决定将在未来三年中给旗下子品牌一加单独投入100亿资金。这100亿资金,大部分将用于一加的产品研发。除此之外,OPPO接下来的值得重用的小家伙OPPOFindN2全面评测在去年差不多同一时间,我上手测试了当时刚刚发布的OPPOFindN,作为OPPO在折叠屏手机市场的试水之作,OPPOFindN却并没有第一代产品中常常出现的粗糙感,反而在手感系统等
增收不增利!厨邦酱油母公司中炬高新去年亏损5。92亿元3月21日,厨邦酱油母公司中炬高新发布2022年度报告。2022年,中炬高新营收53。41亿元,同比增长4。41,归属于上市公司股东的净利润亏损5。92亿元,同比下降179。82。男性最伤精的十种行为,你有吗1。吸烟吸烟会释放出大量的有害物质,这些物质会造成精子的DNA损伤和生殖系统的毒害,进而削弱精子的游动能力和数量。2。喝酒过度饮酒会降低睾丸中的睾酮水平,损害精子的生产与质量,导致粉丝刚买的二手iPhone14Pro无保修,一查却是拒保机!亏大了!iPhone14Pro发售还不到一年,所以正常情况所有的iPhone14Pro都是有保修的。网友刚买的这台iPhone14Pro关于本机却没有显示保修数据,一查却发现该机激活数据保金选2022年度最受欢迎保险榜单首发,众安保险三款明星产品入选3月21日,金选2022年度最受欢迎保险榜单发布,该榜单主要根据平台用户的投保量关键词搜索等真实情况进行综合评选。众安保险旗下三款明星产品宠物医疗险手机碎屏险无忧保综合意外险连揽三苏尉东带队调研资源县真宝鼎南宝鼎国际营地项目建设工作3月15日,自治区文化和旅游厅产业发展处处长苏尉东带队到资源县调研真宝鼎南宝鼎国际营地项目建设工作。资源县委常委县委办主任石克生,县政协副主席程静莲陪同调研。调研组一行通过听取相关济青中线5对国际风情主题特色服务区年底前全部开通中国山东网感知山东3月21日讯(记者张敏敏)3月21日,山东省政府新闻办召开新闻发布会,介绍山东省交旅融合发展情况。山东高速集团执行总监宋斌介绍,山东高速集团将积极发挥高速公路区位EllaEmhoff希望白宫的人都穿上她的七彩毛衣还记得这个冷脸很酷,笑容很甜,年纪不大,却热爱编织这门老手艺的女孩EllaEmhoff吗?过去两年,你也许叫不上她的名字,却频繁地在各种秀场街拍看过她。当然不得不提,Ella的高光这4双鞋子,从春天穿到夏天都很美正式进入春天之后,新衣服应该没有少买吧?给自己的衣橱做大换新的同时,也不要忽略了鞋子哦!毕竟新衣服,还得要搭配上一双新鞋子,才能从头到脚焕然一新。今天,临风君就来跟大家聊聊鞋子。一赏樱花看熊猫游沣河这些公交巴士新线路很春天!3月21日西安樱花限定主题巴士正式上线发车时间为每日930110013301530樱花限定观光车专线采用点到点的线路规划,市民乘客从西安市民游客服务中心旁东侧停车场乘车,沿大雁塔景逛花朝市集,看烟花绚烂,尼山圣境的春天究竟有多美?碧玉妆成一树高,万条垂下绿丝绦。春眠不觉晓,处处闻啼鸟。古人眼中的春天是从一条条在风中摆动的垂柳,从一声声清脆的鸟啼中发现的。那么,春日的尼山都有什么呢?是丝丝缕缕迎风的暗香,是琳乌镇特产乌梅,你吃了拉肚子吗?导游一句话保证你再也不想吃近日,游客唐女士向媒体反映自己在乌镇景区游玩时看见某商店内在售卖本地特产乌梅花钱买完后却被人提醒这不是乌梅,是刷了油的提子唐女士非常生气,要求商家道歉但商家一口回绝并称乌镇都是这样
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网