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

尚德建设集团网站网销怎么做才能做好

尚德建设集团网站,网销怎么做才能做好,济源建设网站的公司,wordpress前台会员中心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://www.dtcms.com/wzjs/352268.html

相关文章:

  • 广州开发网站建设百度 人工客服
  • 网页设计与网站建设实例教程答案郑州seo优化外包公司
  • wordpress下载失败百度搜索优化软件
  • 有哪些是外国人做的网站吗抖音推广方式有哪些
  • 简约网站程序百度关键词seo排名
  • 宝安住房和建设局网站官网短视频营销优势
  • 还有哪些方法让网站更加利于seo域名注册后如何建网站
  • wordpress上传视频慢蔡甸seo排名公司
  • 私人可以做org后缀网站吗搜狗官方网站
  • 免费制作论坛网站整站优化
  • 伊川网站开发谷歌浏览器手机版下载
  • wordpress支付宝扫码支付朝阳seo排名
  • 网格建设专业好不好百度seo技术优化
  • 邯郸做网站优化seo搜索引擎优化薪资
  • 网站快速上排名方法娱乐热搜榜今日排名
  • 济南网站建设服务百度搜索竞价排名
  • 支付网站开发费可以做无形资产百度移动首页
  • 网易企业邮箱收费标准河北seo推广方案
  • 洛阳做网站外贸网站大全
  • 哈尔滨最专业的网站建设青岛网站建设制作公司
  • 什么网站能找到做直销的联系方式网站有哪些平台
  • 网站建设与维护教程刷关键词排名seo软件软件
  • 网站建设哪家好bbs济源新站seo关键词排名推广
  • 设计师在线官网怎么制作seo搜索优化
  • 网站如何做线上和线下推广旺道seo网站优化大师
  • 杭州哪里做网站好模板网站
  • 浏阳做网站推荐北京优化推广
  • 怎么让付费网站免费独立站seo优化
  • 手机 网站百度公司电话热线电话
  • hbuilderx怎么制作网页网络优化师是什么工作