简述
利用spring框架中的任务注解@Scheduled定时执行任务,监控某个服务,并把其状态通过邮件发送给管理员。
发邮件使用springboot的JavaMailSender类。这是一个很通用的工具接口,在springboot中只需要引入一个maven依赖,无需任何配置就可以从容地进行开发工作,简单快捷高效。
以监控Elasticsearch集群的健康状态为例:
添加maven依赖
确保先增加过springboot依赖之后,再增加以下依赖
增加application.properties
需要替换为自己邮箱协议与密码,发送方必须要开启smtp。我这里使用的QQ邮箱,设置方法见QQ邮件开启smtp服务
注意:在spring.mail.password处的值是需要在邮箱设置里面生成的授权码,这个不是真实的密码。
增加监控类
其中HEALTH_CHECK_API可替换为自己的服务监控接口
这样就可以简单的监控服务是否健康了。
尾巴
其中@Scheduled注解的参数解释:
cron
语法@Scheduled(cron=“1 * * * * * *”)
表达式:[秒] [分] [小时] [日] [月] [周] [年]
其中年可以省略
zone
时区,接收一个java.util.TimeZone#ID。cron表达式会基于该时区解析。默认是一个空字符串,即取服务器所在地的时区
fixedDelay
上一次执行完毕时间点之后多长时间再执行。
fixedDelayString
与 3. fixedDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符
@Scheduled(fixedDelayString = “${time.fixedDelay}”)
占位符的使用(配置文件中有配置:time.fixedDelay=5000)
fixedRate
上一次开始执行时间点之后多长时间再执行。
fixedRateString
与 5. fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。
initialDelay
第一次延迟多长时间后再执行。
@Scheduled(initialDelay=1000, fixedRate=5000)
initialDelayString
与 7. initialDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。