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

我开发了一套分布式接口重推系统

  功能介绍
  业务开发中会有方法重推的需求,比如调用第三方系统接口,如果调用失败,需要能够重推,重推后需要更新业务信息,例如业务单据的状态更新为:推送失败(成功)。
  因此决定写一套通用的接口重推功能,能实现自动重推和手动重推。并且记录的接口调用的信息。
  该功能模块目录如下:
  主要功能为:1。在需要记录日志的方法上面添加注解2。调用方法,调用信息记录数据库3。调用重试方法,重试调用异常方法
  日志记录注解
  注解EnableLog说明:Target({ElementType。METHOD})Retention(RetentionPolicy。RUNTIME)DocumentedpublicinterfaceEnableLog{OperationTypetype();接口提供方returnStringprovider();StringcurrentSystem()defaultStringUtils。EMPTY;类型IN本系统对外apiorOUT调的外部接口returnModelTypemodel();成功标志StrreturnStringsuccessStr()defaultStringUtils。EMPTY;允许重试次数,默认1,即可无限重试returnlongallowRetry()default1;是否自动重试0否returnStringneedAuto()defaultSystemConstant。NO;方法描述returnStringdesc()defaultStringUtils。EMPTY;}
  调用示例EnableLog(typeOperationType。INSERT,providerOA,modelModelType。OUT,successStrsuccess,descOA接口消息提醒)publicStringsendNotify(OaTaskMessageoaTaskMessage){OaMessageParamoaMessageParamBeanUtils。copy(oaTaskMessage,OaMessageParam。class);oaMessageParam。setOpenMode(5);oaMessageParam。setModuleCode(srm);oaMessageParam。setMsgType(1);returnoaApiClient。sendMessage(oaMessageParam);}
  参数说明:1。type:目标方法的操作类型。增,删,改,查2。provider:接口来源方3。model:IN本系统对外apiorOUT调的外部接口4。successStr:指定接口调成功的返回5。目标方法的描述重试方法(手动)
  如果标出的方法调用异常,那么就可以执行这个重试方法。该方法主要执行逻辑为:1。在日志记录表获取指定主键id的异常状态方法调用记录2。重复执行次数校验3。反射执行方法4。更细记录状态重试方法(自动)
  该系统默认手动重试,如果在EnableLog注解中我们设置needAutotrue,那么系统自动重试,自动重试功能如下对注解标注的方法放入redis阻塞队列异常重试线程消费阻塞队列
  放入异常队列exceptionResultQueueService。pushExceptionQueue(logId);
  重试线程消费阻塞队列中的值:privatevoidloop(){StringnameThread。currentThread()。getName();log。info(异常方法重试线程启动,当前线程:【{}】,name);while(!Thread。interrupted()){StringapiLogId(String)redisUtils。blockRightPop(EXCEPTIONQUEUEKEY);LogExecutor。LogMethodParamparamnewLogExecutor。LogMethodParam();param。setLogId(apiLogId);logExecutor。executorMethod(param);每隔5s循环一次。减少资源消耗try{Thread。sleep(5000);}catch(InterruptedExceptione){e。printStackTrace();}}}异常重试后业务处理扩展
  如果重新执行方法后需要处理业务逻辑,可以使用这个扩展接口ComponentpublicclassExampleRetryResultHandlerimplementsRetryResultHandler{OverridepublicStringresultHandler(Objectobj){重试方法执行后业务处理returnnull;}OverridepublicStringinvokeMethodStr(){returnexample;}OverridepublicStringmethodName(){returnsendTaskMessage;}}
  只需实现RetryResultHandler接口即可。
  RetryResultHandler说明如下:publicinterfaceRetryResultHandler{方法结果处理器paramobjreturnStringresultHandler(Objectobj);该方法的父层调用方法,全路径returnStringinvokeMethodStr();Enable注解标注的方法名称returnStringmethodName();}
  业务处理逻辑写在resultHandler()方法即可。invokeMethodStr()为该方法的父层方法(全路径),methodName()为该方法的方法名称。
  至此,一套方法日志记录,方法重试的系统完成。分布式系统调用
  在分布式系统中,各系统如何调用这个公用的重试方法呢,我们需要将上述功能封装到一个SDK中,需要调用的系统就引入这个SDK。各业务系统中引入SDK后编写Controller层方法:RestControllerRequestMapping(apiLog)publicclassApiLogController{AutowiredprivateSysLogApiClientsysLogApiClient;执行调用异常的方法returnApiMetadata(actionName执行调用异常的方法,permissionLevelPermissionLevel。PermissionRequired)PostMapping(valueexecutorExceptionMethod)ResponseBodypublicObjectexecutorExceptionMethod(RequestBodyLogMethodParamparam){returnsysLogApiClient。executorExceptionMethod(param);}}
  同时我们需要一个公共服务,该公共服务需要写一个共前端调用的重试接口,前端传入logId,通过路由执行各个业务系统中SDK的executorExceptionMethod方法。
  这样就可以实现在分布式系统中调用公共方法去执行重试了。
  本篇内容到这里就结束了,如果内容对你有帮助,欢迎点赞收藏。

想要肾更强,全靠调阴阳,2个中成药,滋阴又补阳想要肾更强,全靠调阴阳,2个中成药,滋阴又补阳大家好,我是贾医生,肾好命就好,很多肾不好的人往往身体会出现这五种情况,今天贾医生就来一一给你讲清楚,并教你用两种中成药,帮你调!中医荷兰11次参加世界杯全晋级!一纪录仅逊巴西范加尔成护身符卡塔尔世界杯小组赛第三轮,荷兰队20战胜东道主卡塔尔队,以A组第一的身份晋级16强荷兰队一共11次参加世界杯,全部晋级,从来被被小组淘汰过。在拿下这场比赛之后,荷兰队已经在世界杯小世界杯上广告牌被挂反,看蒙牛如何借势营销,这一招太高明了吧今年世界杯最尴尬的事情就是蒙牛的广告事件了吧,蒙牛花了6000万美元,约4亿人民币抢了一个广告位,结果被不认识汉字的卡塔尔工作人员把广告牌给挂反了,蒙牛这回当了一回冤大头。蒙牛作为单机游戏推荐分享之暗黑破坏神2篇前言玩过的游戏也不少,不知从那个写起,打开电脑查看了一直都没有删除的游戏,就看到了暗黑破坏神2,一直没有删先不扯情怀这个东西,主要是别的游戏都是按小时计算游戏时间,暗黑2可以是按年epic2022年黑五特卖进行倒计时海豚平台游戏双加速助阵epic平台上的黑色星期五活动正在进行中,来看看这些惊人特价,其中包括不少首度打折作品,最高可享2。5折特价。优惠将于11月29日结束。正值世界杯期间,足球运动FIFA23六折14为什么老美宁愿和我们撕破脸,也不愿意继续之前的贸易游戏?为什么老美宁愿和我们撕破脸,也不愿意继续之前的贸易游戏?因为美国社会正在撕裂。为什么在全球化的贸易游戏中,美国社会会加速撕裂分化?最直接最根本的原因就是基础产业在流出美国。在近10女婴出生时竟带有5。7厘米尾巴人为什么不长尾巴?大多数动物都有尾巴,大家都知道壁虎危急关头会断尾求生,鱼的尾巴能帮助它们游动,猫科动物还会经常和自己的尾巴玩耍,可人类似乎是个例外。最近,在墨西哥出生的一名女婴被医生发现屁股上竟长大杨实验室一台可移动的电视,会是什么样的体验?视频加载中红网时刻新闻11月28日讯(记者杨淑华甘伟萍)四年一届的世界杯,正在异国他乡的卡塔尔如火如荼地进行,中国球迷们的观战热情也极致拉满。那么问题来了,这届世界杯,您在哪里看球牵动全网的耳朵,找到了近日,浙江衢州3岁女孩文文丢失了价值20余万元的人工耳蜗25日,民警通宵排查找回耳蜗戴上耳蜗的文文向大家比心这一幕太暖了视频加载中女孩丢失价值20万元的耳蜗民警连夜排查帮其找回衢州深度分析这么大一个锅,李铁一个人背不住头条创作挑战赛卡塔尔足球世界杯一开幕,就一直流传着一个段子决赛会场次会场,中国建。机场扩建,新港口,中国建。水库(饮水),太阳能电站,中国建。住宿(集装箱宾馆)豪华住宿(珍珠岛),湛江徐闻公安人文关怀促戒治,送戒毒人员回家尽孝毒品葬送了我的青春,父母为我担惊受怕罹患重病,家里一贫如洗党和政府帮助了我,我一定洗心革面重新做人。近日,41岁的林某在患肝癌晚期的父亲病榻前长跪不起。沉沦毒海的他,在湛江市徐闻县
每日微语01一切都在快速地改变一切都在快速地改变,不停地变迁,拥有的也将会失去,我们能把握住什么?这个生命本来也是不存在的,一切都是无中生有,终有一天也将回到虚无中去。人靠不住,物也会失去,这个身体也会老病死,你理想和仰望的生活,正在成为你的愤怒之源头条创作挑战赛最近频繁出现这样一段话你敬畏天理,他崇拜权威,这是世界观不同你站在良知一边,他站在赢者一边,这是价值观不同你努力是为理想的生活,他努力是为做人上人,这是人生观不同。听基础教育高质量发展需在师生身上见实效本报记者贺春兰人民政协报(2022年11月23日第09版)加快推进教育高质量发展,是党的二十大对教育提出的根本要求。而推进基础教育高质量发展,必需落实到每一所中小学和幼儿园。必需真长沙新媒体旅游推荐官刘纯伟长沙,读你千遍也不厌倦资深自驾旅行博主刘纯伟。红网时刻新闻记者彭超长沙报道寻找美景追求诗意,不一定要去远方。读长沙的感觉像三月,浪漫的季节,醉人的诗篇在土生土长的长沙人刘纯伟看来,长沙就像一首诗一本书,为爱冲锋的竟是我?男女主和好开始带货,网友吐槽好像被耍了头条创作挑战赛上大学以后,学生们迎来了最精彩的校园生活,除了上课,还有很多有意义的活动,可谓乐不思蜀,大学虽然学业不太紧张,但学生也只能一学期回家一趟,和家人的距离被拉开,感情可能江苏爷爷辅导孙子气到拍桌子,孙子蹦蹦跳跳,母亲忍不住笑了教育孩子这件事情上,最让家长头疼的还是辅导孩子写作业。平时性格温和的家长,辅导作业以后也可能会非常容易暴走。看着孩子的父母辅导作业时如此的暴躁,作为爷爷奶奶都觉得是父母问题,认为父论冬季养生冬季养生瞅一瞅,活到九十九论冬季养生冬季是一个闭藏的季节,水因寒而冰冻,地因寒而坼裂,万物都潜伏起来,故称为闭藏。适应冬天藏气的调养,人们应早睡晚起,等到日光出现再起床,避免严寒,保持温暖,不要使皮肤开泄出肝肾亏虚,白发脱发,你需要来这碗羹首乌芝麻核桃黑豆羹材料制首乌30g,黑芝麻50g,核桃肉100g,黑豆50g制法材料洗净,向锅内加入适量清水煮沸,納入制首乌煮30分钟,捞起首乌,再把黑豆核桃肉及芝麻放入搅拌机打成秋冬季节,嘴唇干燥皲裂出血疼痛怎么办?一年四季嘴唇都很干,尤其到了秋冬季节,更加严重,只要说话时嘴唇开合过大或是大笑,就会导致嘴唇开裂出血。这些年里,每天勤喝水敷唇膜涂润唇膏,什么办法都用过了,但嘴唇还是老样子,问该怎孩子不爱吃饭怎么办?一招就搞定逐渐迎来冬天了!家长们又该担心孩子们上学吃不好穿不暖了,上学前夕陆续给孩子准备各种营养补充和代餐零食那甄补要赶紧准备起来了别问为什么,因为这已经成了孩子们的团宠代餐饮了,不仅味道好孩子本无优劣生命至上,这里的生命,指的不是阿猫阿狗的生命,是人的生命。无论一个人地位高低贫穷富裕健康羸弱,都是一个生命。这在现代社会是一个共识。生命也没有优劣,那些刻意强调生命优劣的人,比如纳
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网