微服务架构中的任务调度:在 SpringBoot 框架中使用异步任务,定时任务和邮件任务

Posted 攻城狮Chova

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务架构中的任务调度:在 SpringBoot 框架中使用异步任务,定时任务和邮件任务相关的知识,希望对你有一定的参考价值。

异步任务

@EnableAsync

  • 在类上注解,开启异步任务功能

    @Async

  • 在方法上注解,标记异步方法

    定时任务

  • Spring提供了异步执行任务调度的方式
  • Spring提供了TaskExecutor,TaskScheduler接口
  • 两个注解:

    • @EnableScheduling:在类上注解,开启定时任务功能
    • @Scheduled: 在方法上注解,标记定时任务方法
          • MON-FRI
            @Scheduled(cron="0 MON-FRI")
            @Scheduled(cron="1,2,3 MON-FRI")-枚举: ,
            @Scheduled(cron="0-15 MON-FRI")-区间: -
            @Scheduled(cron="0/4 MON-FRI")-步长: / 从0开始,每4秒启动一次
            cron="0 0/5 14,18 ?" 每天14点整和18点整,每隔5分钟执行一次
            cron="0 15 10 ? * 1-6" 每个月的周一至周六10:15分执行一次
            cron="0 0 2 ? * 6L" 每个月的最后一个周六2点执行一次
            cron="0 0 2 LW * ?" 每个月的最后一个工作日2点执行一次
            cron="0 0 2-4 ? * 1#1" 每个月的第一个周一2点到4点,每个整点执行一次
  • cron表达式:
字段允许值允许特殊字符
0-59, - * /
0-59, - * /
小时0-23, - * /
日期1-31, - * ? / L W C
月份1-12, - * /
星期0-7或SUN-SAT,0和7是SUN, - * /
特殊字符含义
,枚举
-区间
*任意
/步长
?日和星期的冲突匹配
L最后
w工作日
C与calendar联系后计算过的值
#星期: 4#2-第2个星期三

邮件任务

  • 邮件发送引入spring-boot-starter-mail依赖
  • SpringBoot自动配置MailSenderAutoConfiguration
  • 定义MailProperties内容,配置在application.yml中

    spring.mail.username=
    spring.mail.password=(授权码)
    spring.mail.host=(smtp服务器地址)
    spring.mail.properties.mail.smtp.ssl.enable=true
  • 自动装配JavaMailSender

    SimpleMailMessage mes=new SimpleMailMessage();
    
    创建一个复杂消息邮件
    MimeMessage mimeMes=mailSender.createMimeMessage();
    MimeMessageHelper mimeHelper=new MimeMessageHelper(mimeMes,true(上传文件))
    mimeHelper.addAttachment("fileName",new File("pathName"));

以上是关于微服务架构中的任务调度:在 SpringBoot 框架中使用异步任务,定时任务和邮件任务的主要内容,如果未能解决你的问题,请参考以下文章

宜信微服务任务调度平台建设实践|分享实录

宜信微服务任务调度平台建设实践|分享实录

宜信开源微服务任务调度平台(SIA-TASK)

一款你不得不了解的轻量级分布式任务调度系统

微服务分布式调度Elastic-job

宜信开源|分布式任务调度平台SIA-TASK的架构设计与运行流程