ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

@Async注解实现Springboot异步任务

2021-05-18 23:30:50  阅读:145  来源: 互联网

标签:异步 Springboot 用户注册 积分 毫秒 任务 注册 Async


首先理解下,为什么要有异步任务,举个例子:
用户注册后送积分,当用户注册成功了,但接下来的送积分程序出错了,导致整个注册失败了。

异步任务的作用:

1.容错性
那么这里使用异步任务可以避免,比如用户注册成功后,直接返回注册成功信息,后续的异步任务来处理送积分任务,如果送积分程序报错了,可以在送积分程序上做补偿处理。

2.健壮性
假设注册任务花费20毫秒,送积分任务花费50毫秒,那么用户注册如果是同步任务则总共需花费70毫秒,使用体验很差,如果是异步任务,注册成功花费20毫秒直接返回注册成功信息,异步任务处理那送积分的50毫秒任务,用户是无感的,总耗时20毫秒,用户体验好。

代码示例如下:

1.开启异步任务支持

package org.sang;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

@EnableAutoConfiguration
@ComponentScan
public class Application {
    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }
}

2.controller调用service异步任务

 @RequestMapping("/sync")
    public String addScore(){
        System.out.println("-------------注册用户--------------");
        this.userService.addScore();
        return "success";
    }

 @Async
    public void addScore() {
        try {
            Thread.sleep(5*1000);
            logger.info("------------处理积分------------");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

请求后会发现,日志先打印-------------注册用户--------------
页面立即返回success后,过5秒钟,日志再打印------------处理积分------------

说明异步任务成功,先注册成功了,返回成功信息后,再异步的处理送积分任务。

标签:异步,Springboot,用户注册,积分,毫秒,任务,注册,Async
来源: https://blog.csdn.net/m0_37899908/article/details/117002862

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有