导航栏

SpringBoot与任务

异步任务

在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在 处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用 多线程来完成此类任务,其实,在Spring 3.x之后,就已经内置了@Async来完 美解决这个问题。

应用场景

在公众号的运营过程中,典型的事件包括:

发送短信验证码

购买成功或者抽奖成功短信通知

卡券或优惠券发放

发放微信红包

微信消息通知

订单流程处理

定时批处理(比如数据同步)

工作流性质的异步任务(未完成异步任务补偿)
异步调用的经典业务场景

两个注解

@EnableAysnc:启动微服务的异步注解功能
@Aysnc:标记这个服务为异步服务



运行结果
会先执行方法hello2
过3秒后执行异步任务hello

定时任务

项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前 一天的日志信息。Spring为我们提供了异步执行任务调度的方式,提供 TaskExecutor 、TaskScheduler 接口。

两个注解

@EnableScheduling 开启基于注解的定时任务
@Scheduled 标注当前服务为定时任务

on the second, minute, hour, day of month, month, and day of week.


‘*’:表示为每

  • 0 0 * * * MON-SAT(表示周一到周五的每一整点都会运行该任务)
  • 0,1,2,3,4 * * * * *(每天的每分钟的前五秒都会执行该程序)
  • 0-4 * * * * *(0到4秒每一秒都会启动)
  • 0/4 * * * * * (从0s启动每四秒执行一次)
  • 0 15 10 ?* 1-6(每个月的周一至周六10:15分执行一次)
  • 0 0 2 ? * 6L(每个月的最后一个周六凌晨2点执行一次)
  • 0 0 2 LW * ?(每个月的最后一个工作日凌晨2点执行一次)L;最后一个,W:工作日
  • 0 0 2-4 ? * 1#1(每个月的第一周凌晨2点到4点期间,每个整点都执行一次)

springJob的详细链接
springboot的定时任务使用

邮件任务

--在qq邮箱中获取授权码

设置->账户

  • 邮件发送需要引入启动器spring-boot-starter-mail
<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  • Spring Boot 自动配置MailSenderAutoConfiguration
  • 定义MailProperties内容,配置在application.yml中
  • 自动装配JavaMailSender
在application.properties中配置
spring.mail.username=邮箱
spring.mail.password=授权码
spring.mail.host=smtp.qq.com//qq服务器地址
spring.mail.properties.mail.smtp.ssl.enable=true

简单的邮箱发送

复杂的邮箱发送


通过html也可以设计超链接

如果报错显示需要安全的连接,比如ssl
需要配置ssl安全链接
spring.mail.properties.mail.smtp.ssl.enable=true

posted @ 2020-11-23 18:01  RickZ  阅读(45)  评论(0编辑  收藏  举报