image.png异步任务

ykkj-spring-boot-starter-job技术组件,除了提供定时任务的功能,还提供了 Async 异步任务的能力。系统使用异步任务,提升执行效率。例如说:

  • 操作日志模块module/system/service/logger/OperateLogServiceImpl.java,异步记录【操作日志】
  • 访问日志模块module/infra/service/logger/ApiAccessLogServiceImpl.java,异步记录【访问日志】

    1. Async 配置

    在 framework/quartz/config/YkkjAsyncAutoConfiguration.java配置类,设置使用 TransmittableThreadLocal,解决异步执行时上下文传递的问题。如下图所示:
    image.png
    友情提示:
    项目使用到 ThreadLocal 的地方,建议都使用 TransmittableThreadLocal 进行替换。

    2. 引入依赖

    以访问日志模块为例,讲解它如何使用异步任务,实现异步记录【访问日志】的功能。

    2.1 引入依赖

    在 ykkj-module-system-infra 模块中,引入 ykkj-spring-boot-starter-job 技术组件。如下所示: ```xml cn.iocoder.boot yudao-spring-boot-starter-job

```

2.2 添加 @Async 注解

在 module/infra/service/logger/ApiAccessLogServiceImpl.java的 #createApiAccessLogAsync(…) 方法上,添加 @Async 注解,声明它要异步执行。如下图所示:
image.png

2.3 测试调用

随便请求一个 RESTful API 接口,可以看到在异步任务的线程池中,进行了访问日志的记录。如下图所示:
image.png