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

SpringCloud使用注解AOPMQ来实现日志管理模块

  简介
  无论在什么系统中,日志管理模块都属于十分重要的部分,接下来会通过注解AOPMQ的方式实现一个简易的日志管理系统思路注解:标记需要记录日志的方法AOP:通过AOP增强代码,利用后置异常通知的方式获取相关日志信息,最后使用MQ将日志信息发送到专门处理日志的系统RabbitMQ:利用解耦、异步的特性,协调完成各个微服务系统之间的通信1、日志表结构
  表结构(syslog):CREATETABLEsyslog(idint(11)NOTNULLAUTOINCREMENTCOMMENT唯一ID,optidint(11)DEFAULTNULLCOMMENT操作用户id,optnamevarchar(50)DEFAULTNULLCOMMENT操作用户名,logtypevarchar(20)DEFAULTNULLCOMMENTahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a类型,logmessagevarchar(255)DEFAULTNULLCOMMENTahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a信息(具体方法名),createtimedatetimeDEFAULTNULLCOMMENT创建时间,PRIMARYKEY(id))ENGINEInnoDBAUTOINCREMENT17DEFAULTCHARSETutf8COMMENT系统ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a表;
  实体类(SysLog):DatapublicclassSysLog{privatestaticfinallongserialVersionUID1L;唯一IDTableId(valueid,typeIdType。AUTO)privateIntegerid;操作用户idprivateIntegeroptId;操作用户名privateStringoptName;ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a类型privateStringlogType;ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a信息(具体方法名)privateStringlogMessage;创建时间privateDatecreateTime;}2、注解注解(SystemLog):
  仅作为标记的作用,目的让JVM可以识别,然后可以从中获取相关信息Target:定义注解作用的范围,这里是方法Retention:定义注解生命周期,这里是运行时Target(ElementType。METHOD)Retention(RetentionPolicy。RUNTIME)publicinterfaceSystemLog{SystemLogEnumtype();}枚举(SystemLogEnum):
  限定日志类型范围publicenumSystemLogEnum{SAVELOG(保存),DELETELOG(删除),REGISTERLOG(注册),LOGINLOG(登录),LAUDLOG(点赞),COLLECTLOG(收藏),THROWLOG(异常),;privateStringtype;SystemLogEnum(Stringtype){this。typetype;}publicStringgetType(){returntype;}}3、AOP切面AOP(SysLogAspect):
  实现代码的增强,主要通过动态代理方式实现的代码增强。拦截注解,并获取拦截到的相关信息,封装成日志对象发送到MQ队列(生产端)ComponentAspectSlf4jpublicclassSysLogAspect{AutowiredMqStreamstream;切点Pointcut(annotation(cn。zdxh。commons。utils。SystemLog))publicvoidlogPointcut(){}后置通知After(logPointcut())publicvoidafterLog(JoinPointjoinPoint){一般ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志aSysLogsysLogwrapSysLog(joinPoint);log。info(Log值:sysLog);发送mq消息stream。logOutput()。send(MessageBuilder。withPayload(sysLog)。build());}异常通知AfterThrowing(valuelogPointcut(),throwinge)publicvoidthrowingLog(JoinPointjoinPoint,Exceptione){异常ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志aSysLogsysLogwrapSysLog(joinPoint);sysLog。setLogType(SystemLogEnum。THROWLOG。getType());sysLog。setLogMessage(sysLog。getLogMessage()e);log。info(异常Log值:sysLog);发送mq消息stream。logOutput()。send(MessageBuilder。withPayload(sysLog)。build());}封装SysLog对象paramjoinPointreturnpublicSysLogwrapSysLog(JoinPointjoinPoint){获取请求响应对象ServletRequestAttributesattributes(ServletRequestAttributes)RequestContextHolder。getRequestAttributes();HttpServletRequestrequestattributes。getRequest();MethodSignaturesignature(MethodSignature)joinPoint。getSignature();SysLogsysLognewSysLog();获取方法全路径StringmethodNamesignature。getDeclaringTypeName()。signature。getName();获取注解参数值SystemLogsystemLogsignature。getMethod()。getAnnotation(SystemLog。class);从header取出tokenStringtokenrequest。getHeader(token);if(!StringUtils。isEmpty(token)){操作人信息IntegeruserIdJwtUtils。getUserId(token);StringusernameJwtUtils。getUsername(token);sysLog。setOptId(userId);sysLog。setOptName(username);}if(!StringUtils。isEmpty(systemLog。type())){sysLog。setLogType(systemLog。type()。getType());}sysLog。setLogMessage(methodName);sysLog。setCreateTime(newDate());returnsysLog;}}3、RabbitMQ消息队列MQ:
  这里主要是通过SpringCloudStream集成的RabbitMQSpringCloudStream:
  作为MQ的抽象层,已屏蔽各种MQ的各自名词,统称为input、output两大块。可以更方便灵活地切换各种MQ,如kafka、RocketMQ等
  (1)定义InputOuput接口(MqStream)ComponentpublicinterfaceMqStream{StringLOGINPUTloginput;StringLOGOUTPUTlogoutput;Input(LOGINPUT)SubscribableChannellogInput();Output(LOGOUTPUT)MessageChannellogOutput();}(2)MQ生产者
  注:这里使用到AOP切面的微服务,都属于MQ生产者服务
  引入依赖:
  这里没有版本号的原因是springcloud已经帮我们管理好各个版本号,已无需手动定义版本号!SpringCloudStreamdependencygroupIdorg。springframework。cloudgroupIdspringcloudstreamartifactIddependencydependencygroupIdorg。springframework。cloudgroupIdspringcloudstreambinderrabbitartifactIddependency
  在程序入口开启MQ的InputOutput绑定:SpringBootApplication(scanBasePackages{cn。zdxh。user,cn。zdxh。commons})EnableEurekaClientMapperScan(cn。zdxh。user。mapper)EnableBinding(MqStream。class)开启绑定EnableFeignClientspublicclassYouquServiceProviderUserApplication{publicstaticvoidmain(String〔〕args){SpringApplication。run(YouquServiceProviderUserApplication。class,args);}}
  yml配置:
  在生产者端设置outputdestination:相当于rabbitmq的exchangegroup:相当于rabbitmq的queue,不过是和destination一起组合成的queue名binder:需要绑定的MQSpringCloudStream相关配置spring:cloud:stream:bindings:exchange与queue绑定logoutput:ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a生产者设置outputdestination:log。exchangecontenttype:applicationjsongroup:log。queuebinder:youqurabbit自定义名称binders:youqurabbit:自定义名称type:rabbitenvironment:spring:rabbitmq:host:localhostport:5672username:guestpassword:25802580
  注:完成以上操作,即完成MQ生产端的所有工作(3)MQ消费者
  引入依赖、开启InputOutput绑定:均和生产者的设置一致
  yml配置:
  在生产者端设置inputspring:cloud:SpringCloudStream相关配置stream:bindings:exchange与queue绑定loginput:ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a消费者设置inputdestination:log。exchangecontenttype:applicationjsongroup:log。queuebinder:youqurabbitbinders:youqurabbit:type:rabbitenvironment:spring:rabbitmq:host:localhostport:5672username:guestpassword:25802580
  消费者监听(LogMqListener):
  监听生产者发过来的日志信息,将信息添加到数据库即可ServiceSlf4jpublicclassLogMqListener{AutowiredSysLogServicesysLogService;StreamListener(MqStream。LOGINPUT)publicvoidinput(SysLogsysLog){log。info(开始记录ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a);sysLogService。save(sysLog);log。info(结束记录ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a);}}
  注:完成以上操作,即完成MQ消费端的所有工作4、应用
  简述:
  只需将SystemLog(typeSystemLogEnum。REGISTERLOG),标记在需要记录的方法上,当有客户端访问该方法时,就可以自动完成日志的记录
  5、总结
  流程:
  注解标记AOP拦截日志发送到MQ专门处理日志的系统监听MQ消息日志插入到数据库
  来源:blog。csdn。netweixin38802061articledetails105458047

京城古老的坛庙遗产之九庙学相依,彰显中国古代教育的特点位于京城北二环内的孔庙与国子监一墙之隔,人们习惯地参观孔庙后再去国子监转转。作为纪念中国古代思想家、教育家孔夫子的祠庙,在全国各个地区都有,只不过叫法各不相同,有称文庙、夫子庙……tst气垫bb好用吗?庭秘密气垫bb怎么样?tst庭魅智妍气垫BB霜是一款非常出色的底妆产品,小编身边很多妹子都有购买这款气垫呢。今天5号网小编就要为大家介绍一下,tst气垫bb好用吗?庭秘密气垫bb怎么样?庭秘密气垫b……TST口红色号TST口红试色tst最新推出的口红分为四种颜色,虽然颜色种类不多,但是款款堪称经典。今天小编专门进行了产品试色,大家在购买的时候可以作为参考哦。tst口红怎么样TST的彩妆新品口……tst口红哪个颜色好看?tst口红图片tst最新推出的口红一直是很多人比较关注的一款产品,毕竟口红算是女人最爱的彩妆单品了。那么,这款新款口红有多少个颜色呢?哪个颜色最好看呢?tst口红色号【蜜桃粉】想……7部iPhone续航测试iPhone13第二iPhoneSE目前主流的iPhone主要有这么几款,比如iPhone13系列、iPhone12系列等等,这次给大家带来了多部iPhone之间的电池续航测试,希望能够给有购机计划的小伙伴提供帮……TST冻膜可以天天用吗?TST冻膜使用方法一般我们在购买面膜的时候上面都会备注使用方法和次数,但是有的人喜欢密集性的保养皮肤,因此,可能会连续使用。那么,tst面膜可以天天用吗?怎么用比较好呢?TST冻膜可以天天……做法简单的白菜清汤,老少皆宜餐桌上有碗热气腾腾的鲜汤,常使人垂涎欲滴。汤是百姓餐桌上的重要组成部分,在我国饮食文化中地位极高。汤的种类五花八门,不同石材的处理与火候控制大有不同。尤其在南方对于汤的分……tst口红多少钱一支?tst口红什么时候上市?继张庭推出的活酵母获得市场认可之后,tst又推出了新款口红,很多妹子都已经迫不及待了。那么,tst口红什么时候上市呢?多少钱一支呢?产品信息上市时间:2016年……阿玛尼男士香水哪款好?阿玛尼男士香水推荐阿玛尼家的男士香水,十分具有男人味的香水哦!喷上去感觉逼格瞬间上了一个档次,一秒钟变身男神,你喜欢的男星都在用,阿玛尼男士香水,因为你,有格调!阿玛尼夜色香水灵感源于白昼……mshloveliner眼线液笔怎么样多少钱好用吗mshloveliner随心所欲眼线液笔,这款是阿花花酱推荐过的一款眼线液笔,真的很细很细,一点也不亚于kissme家的产品,防水设计,不晕染,易卸妆,再也不用担心脱妆啦!ms……纪梵希腮红怎么样纪梵希腮红好用吗纪梵希腮红盘,在原来的基础上有更多的颜色选择,包装更加的粉嫩少女。那么纪梵希腮红盘怎么样?纪梵希腮红盘好用吗?介绍Givenchy2017年新版腮红盘PrismeBlus……范思哲是奢侈品牌吗范思哲属于几线品牌范思哲的香水是比较出名的,有很多人都喜欢把它和ck或是普拉达香水做比较,那么这个范思哲是不是属于一个奢侈品牌?它又是属于几线品牌呢?范思哲是奢侈品牌吗范思哲属于高档品牌,……
2022年待定14部电影,观众期待排名出炉沈腾马丽力压梁朝伟2022年未定档的这14部电影,你最期待哪一部?2022年即将过半,很多电影排档延期,它们等待上映,甚至无法定档。而我们也在等待,等待那一刻的自由。阿蜜……南瓜色眼影配什么颜色口红?南瓜色眼影盘推荐在我们平时的日常生活中有很多人都非常喜欢化妆,化妆最重要的一部分就是眼妆,眼妆是一个完整妆容的关键之处,南瓜色眼影是现在非常流行的一种眼影颜色,那么南瓜色眼影配什么颜色口红?南……ettusais艾杜莎睫毛膏打底膏怎么用?睫毛一天不会塌作为艾杜纱家的明星产品,这款睫毛打底膏囊括了日本的多款奖项,可以让睫毛刷出纤长浓密的效果,根根分明,来看看这款睫毛打底膏究竟如何吧!艾杜莎睫毛膏打底膏怎么用睫毛膏打底,艾……2018年口红盘哪个牌子好?2018口红盘排行榜前十强口红盘可以随身携带,而且多种色号,不管是调色还是每天变幻颜色,都比口红更加具有趣味性,下面就为大家推荐几款口红盘吧!玛丽艳经典八色唇膏盘色调饱满,膏体细腻水润,唇感轻盈舒……罕见!67。2度的沙漠下雪了!这意味着会有诡异的事情发生吗?你可能见过像石子一样的冰雹,你也可能见过倾盆的大雨,但是你见过沙漠里下雪吗?就在2021年11月28日,中国67。2度的塔克拉玛干沙漠,竟然下雪了,是的,你没听错,沙漠下雪了。……韩式丸子头怎么扎韩式丸子头扎法图解丸子头近些年最为流行的发型之一,而韩系发型这些年也是越来越走俏,而这里5号网美发小编要给大家分享的便是韩系丸子头扎法图解步骤,这款韩式丸子头最大的特点便是无刘海盘发,让美眉们更……2017男生染发流行什么颜色男生染色发型图片2017年已经到来,很多女生都在忙着给自己什么样的新的造型,换什么新的发型染什么新的发色,其实除女生外,许多男生也在考虑这方面的问题,这里5号网小编将给大家分享2017男生流行……luna遮瑕液怎么选色?luna露娜遮瑕液试色getitbeauty中魔女强烈推荐的一款遮瑕产品,也是luna家的超模彩妆系列,遮瑕度满分,痘痘斑点都走开!下面5号网小编为大家介绍luna遮瑕液色号试色luna遮瑕液怎么选……什么bb霜适合19岁的学生用好用不贵的bb霜推荐BB霜是大家都很熟悉的一种底妆产品,在平时生活中经常看到有人使用BB霜,BB霜可以均匀提亮肤色肤色,让整个人看起来更精神,皮肤更加无暇精致。什么bb霜适合19岁的学生用1……有限责任家庭作者李雪作为一位心理学研究者,把专业知识用通俗的语言感性地表达出来。爱与自由是李雪一贯的教育理念,我们每个人都要对自已的人生负责,做一个清醒的有限责任人。书中分别从母婴关……透真气垫bb霜安全吗透真气垫适合油皮吗透真是一个国产的品牌,她们家的产品在小红书上有很多博主推荐,但是很多宝宝们都不敢轻易下手,因为从来没听说过这个牌子,所以不敢入手,那到底透真的气垫bb安全吗?透真气垫bb霜安全……tiffany和pony酒红色眼妆教程化妆所需产品很多人在平时的日常生活中都会经常化妆,通常我们化妆的关键所在就是眼妆部分,很多人都会通过化妆来改变自己,酒红色眼妆一直深受大家的欢迎与喜爱,那么下面就由5号网的小编来为大家介绍……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网