当前位置: 首页 > wzjs >正文

江苏推广网站建设业务什么做网站站群

江苏推广网站建设业务,什么做网站站群,微商城网站建设如何,做网站赚钱的时代过去了吗Spring AOP + RocketMQ 实现企业级操作日志异步采集(实战全流程) 📌 项目背景 在企业级微服务架构中,记录操作日志是一项刚需。传统方式常使用数据库直接写入或通过 Feign 调用日志微服务,但这样存在耦合高、主流程阻塞、扩展性差等问题。 为此,我们将使用: Spring …

Spring AOP + RocketMQ 实现企业级操作日志异步采集(实战全流程)

📌 项目背景

在企业级微服务架构中,记录操作日志是一项刚需。传统方式常使用数据库直接写入或通过 Feign 调用日志微服务,但这样存在耦合高、主流程阻塞、扩展性差等问题。

为此,我们将使用:

  • Spring AOP 实现非侵入式日志采集
  • RocketMQ 实现异步解耦投递
  • Redis 实现消息幂等控制
  • DLQ 死信队列保障日志消息最终可达

🧱 技术选型

模块技术
日志采集Spring AOP + 自定义注解
消息中间件RocketMQ + Spring Cloud Stream
幂等控制Redis
安全框架Sa-Token
监控 & 补偿RocketMQ DLQ、自定义消费处理

🚦 实现目标

  • 通过 @Log 注解拦截业务方法
  • 捕获操作人、IP、请求参数、响应结果、执行耗时等日志信息
  • 使用 RocketMQ 异步投递日志消息
  • 使用 Redis 做幂等处理,防止重复消费
  • 消费失败自动重试,最终由 DLQ 消费者处理

📦 Maven 依赖

确保主业务系统和日志服务都引入 RocketMQ 依赖:

<!-- RocketMQ Stream -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
</dependency>

1️⃣ 日志注解定义

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {String title() default "";BusinessType businessType() default BusinessType.OTHER;OperatorType operatorType() default OperatorType.MANAGE;boolean isSaveRequestData() default true;boolean isSaveResponseData() default true;String[] excludeParamNames() default {};
}

2️⃣ AOP 切面实现(LogAspect)

  • 使用 @Before/@AfterReturning/@AfterThrowing 统一处理日志
  • 日志采集后调用 logMqService.saveSysLog() 异步发送到 MQ
  • 使用 ThreadLocal 计算执行耗时
@Aspect
@Component
public class LogAspect {private static final ThreadLocal<Long> TIME_THREADLOCAL = new NamedThreadLocal<>("Cost Time");private static final String[] EXCLUDE_PROPERTIES = {"password", "oldPassword", "newPassword", "confirmPassword", "credentials"};@Resource private HttpServletRequest request;@Resource private LogMqService logMqService;@Before("@annotation(controllerLog)")public void boBefore(JoinPoint joinPoint, Log controllerLog) {TIME_THREADLOCAL.set(System.currentTimeMillis());}@AfterReturning(pointcut = "@annotation(controllerLog)", returning = "jsonResult")public void doAfterReturning(JoinPoint joinPoint, Log controllerLog, Object jsonResult) {handleLog(joinPoint, controllerLog, null, jsonResult);}@AfterThrowing(value = "@annotation(controllerLog)", throwing = "e")public void doAfterThrowing(JoinPoint joinPoint, Log controllerLog, Exception e) {handleLog(joinPoint, controllerLog, e, null);}protected void handleLog(final JoinPoint joinPoint, Log controllerLog, 

文章转载自:

http://0Uve0hpB.mjtft.cn
http://Quk9i0In.mjtft.cn
http://Hnle0BNO.mjtft.cn
http://yeQanC50.mjtft.cn
http://YsPBaN2Y.mjtft.cn
http://3tTslpGk.mjtft.cn
http://1FQa09Qk.mjtft.cn
http://pE7uBAyq.mjtft.cn
http://NpY817TD.mjtft.cn
http://Mgk7m5xp.mjtft.cn
http://NSDvaMCO.mjtft.cn
http://Wq98dGRL.mjtft.cn
http://28temb4y.mjtft.cn
http://iKcuETlx.mjtft.cn
http://QAh1Arrf.mjtft.cn
http://dqKMvXBt.mjtft.cn
http://CCr03zNH.mjtft.cn
http://HVfnW5dp.mjtft.cn
http://FV2maFee.mjtft.cn
http://k3qEDwLR.mjtft.cn
http://4jcSvpvn.mjtft.cn
http://PBt2vOjI.mjtft.cn
http://6zmsGUG9.mjtft.cn
http://p5Xs5y4o.mjtft.cn
http://Pb9NXA9C.mjtft.cn
http://zHblsJVb.mjtft.cn
http://e82VMfPq.mjtft.cn
http://MwTyn1oz.mjtft.cn
http://AQCkcPko.mjtft.cn
http://HpgWgN7l.mjtft.cn
http://www.dtcms.com/wzjs/746773.html

相关文章:

  • 江苏省建设执业网站网页传奇开服表
  • 平台和网站有什么区别北京网站优化招聘
  • 眉山建设局网站在线简历模板
  • 网站开发对cpu要求高吗上海500强企业排名
  • 做网站带来好处一键生成logo免费在线网页
  • 商丘网站建设制作网站首页布局自适应
  • 招聘网站做招聘顾问用dedecms做的网站 脚本是什么
  • 装修公司的网站怎么做大兴区企业网站建设
  • 个人网站开发要多久怎么样自己做企业网站
  • 网站开发用php好吗哈尔滨干肠制作
  • ps做网站原形哪个平台做推广效果好
  • 利为汇wordpress谷歌seo技巧
  • 万网网站备案管理swiper手机网站案例
  • wordpress和站点什么是企业形象设计
  • 深圳龙岗建网站服装网站页面设计
  • 虚拟主机建设网站绑定域名dw做网站学习解析
  • 网站建设开题报告中的问题销售平台的重要性
  • 游戏网站 模板编程培训心得
  • 网站的系统建设方式有哪些方面如何做qq钓鱼网站
  • 网站建设开发设计营销公司厦门龙华品牌网站制作
  • asp静态网站wordpress 焦点图
  • 北京网站开发月薪手机版网站建设
  • 网站建设和网络维护帮你做决定的网站
  • led高端网站建设网站上怎么做弹目提醒
  • 安顺网站设计wordpress怎么搬站
  • 建站服务是什么学网站建设多少学费
  • 淘宝客推广平台湖南纯手工seo电话
  • 网站优化的意义沧州微酷网络科技有限公司
  • 目前网站开发语言企业建站系统下载
  • 介绍做燕窝的网站网站正在建设中 源码下载