Springboot 任务管理

关于web开发的任务

异步任务(无返回值异步任务调用)

web应用开发中,大多数情况都是通过同步方式完成数据交互处理:但是当处理与第三方系统的交互时候容易造成相应迟缓的情况,之前大部分都是使用多线程完成此任务,除此之外还可以使用异步调用的方式解决这个问题.根据异步处理方式的不同,可以将异步任务的调用分为无返回值异步任务调用和有返回值异步任务调用.

  1. springboot 项目创建
    使用spring initialzr方式创建,加入web依赖,spring框架提供了对异步任务的支持,springboot框架继承了这一异步任务功能.在springboot整合异步任务只需要在项目中引入web相关依赖即可.
  2. 编写异步调用方法
 //使用@Asyn注解将sendMsg()方法标注为异步方法,模拟发送短信验证码
 	@Service
public class MyAsynService {
    @Async
    public void sendMsg() throws Exception {
        System.out.println("调用短消息验证业务的方法---");
        Long startTime = System.currentTimeMillis();
        Thread.sleep(5000);
        long endTime = System.currentTimeMillis();
        System.out.println("短信业务执行完成耗时:" + (endTime - startTime));
    }
}
  1. 开启基于注解的异步任务支持
    使用@EnableAsync注解开启基于注解的任务支持,一般添加在项目启动类上
@SpringBootApplication
@EnableAsync //开启基于注解的异步任务支持
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    }
  1. 编写控制层业务调用方法
    在此模拟编写用户短信发送的处理方法
@RestController
public class MyAsynController {
    @Autowired
    private MyAsynService myAsynService;

    @GetMapping("/sendMsg")
    public String sendMsg() throws Exception {
        long startTime = System.currentTimeMillis();
        myAsynService.sendMsg();
        long endTime = System.currentTimeMillis();
        System.out.println("主流程耗时:" + (endTime - startTime));
        return "success";
    }

}

5.异步任务效果测试
启动项目在浏览器输入:http://localhost:8080/sendMsg, 测试异步任务请求,此时会发现浏览器上会快速响应"success",同时,控制台会输出下图.
从展示结果看出,执行sendMsg()方法并调用方法处理短信业务时,在很短时间内完成主流程的执行,并向页面响应流程结果,而主流程打印出方法之前调用的异步方法经过一段时间后才执行完毕.因此,从执行结果可以发现,案例无返回结果值的异步调用成功.

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值