当前位置:   article > 正文

SpringBoot异步任务记录_xxjob异步任务如何添加日志

xxjob异步任务如何添加日志

简介

突发奇想,就想玩一下异步任务,记得之前项目有个场景需要使用异步执行,但是异步调用没有成功,后来采用了多线程去执行,今天就系统的学习下异步执行任务。记录一下

有时候在项目中,当访问其他人的接口较慢或者做耗时任务时,不想程序一直卡在耗时任务上,想程序能够并行执行, 我们可以使用多线程来并行的处理任务,也可以使用 spring 提供的异步处理方式 @Async 。

在异步处理的方法上添加注解 @Async ,就会启动一个新的线程去执行。

  1. Spring 通过任务执行器 TaskExecutor ,来实现多线程和并发编程,使用 ThreadPoolTaskExecutor 可实现一个基于线程池的 TaskExecutor ;

  2. 异步需要在配置类上面加 @EnableAsync  来开启对异步任务的支持在需要异步执行的方法上面加 @Async  来声明这个方法是一个需要异步执行的方法;

  3. 让配置类实现 AsyncConfigurer 接口,并重写 getAsyncExecutor 方法,并返回一个 ThreasPoolTaskExecutor ,就可以获取一个基于线程池的 TaskExecutor ;

  4. @Async 用在方法上,表示这个方法是一个异步的方法,如果用在类上面,表明这个类中的所有方法都是异步的方法。

测试

  • 新建 SpringBoot 项目,导入如下依赖

  1. <!--SpringBoot版本-->
  2. <parent>
  3.     <groupId>org.springframework.boot</groupId>
  4.     <artifactId>spring-boot-starter-parent</artifactId>
  5.     <version>2.5.3</version>
  6.     <relativePath/> <!-- lookup parent from repository -->
  7. </parent>
  8. <!--相关插件-->
  9. <dependencies>
  10.     <dependency>
  11.         <groupId>org.springframework.boot</groupId>
  12.         <artifactId>spring-boot-starter-web</artifactId>
  13.     </dependency>
  14.     <dependency>
  15.         <groupId>org.projectlombok</groupId>
  16.         <artifactId>lombok</artifactId>
  17.         <optional>true</optional>
  18.     </dependency>
  19.     <dependency>
  20.         <groupId>org.springframework.boot</groupId>
  21.         <artifactId>spring-boot-starter-test</artifactId>
  22.         <scope>test</scope>
  23.     </dependency>
  24. </dependencies>
  • 创建一个配置类,配置线程池参数

  1. package com.mobaijun.config;
  2. import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
  3. i
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/954317
推荐阅读
相关标签
  

闽ICP备14008679号