在上一篇中我们学习到了 Admin Service Clustering 分布式缓存配置 ,这一篇我们来学习,客户端离线,出现故障的时候,我们这么能及时知道呢,发现邮件通知也许是最简单的方式了!
邮件通知将作为使用Thymeleaf模板呈现的HTML电子邮件进行传递。要启用邮件通知
将spring-boot-starter-mail添加到admin Service 依赖中:
pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
application.properties:
spring.mail.host = smtp.163.com
spring.mail.username=miraitowa1796@163.com
spring.mail.password=xxxxxxxxx //自己的授权码
spring.boot.admin.notify.mail.to=miraitowa1796@163.com //邮件收件人
spring.boot.admin.notify.mail.from=miraitowa1796@163.com //邮件发件人
我们这里以网易邮箱来做测试,在做发送测试前,大家先去注册一下,并且在设置里面去开启服务;
开启后会给一个授权码,一定要保持起来,这就是配置文件中的密码,请大家注意
客户端离线和重启的时候发送邮件通知,创建NotifierConfiguration类:
/**
* @author qrn
* @version 1.0
* @date 2021/4/9 17:53
* 邮箱事件配置: 通知提醒 每10分钟发送一次提醒
*/
@Configuration(proxyBeanMethods = false)
public class NotifierConfiguration {
private final InstanceRepository repository;
private final ObjectProvider<List<Notifier>> otherNotifiers;
public NotifierConfiguration(InstanceRepository repository, ObjectProvider<List<Notifier>> otherNotifiers) {
this.repository = repository;
this.otherNotifiers = otherNotifiers;
}
@Bean
public FilteringNotifier filteringNotifier() { // <1>
CompositeNotifier delegate = new CompositeNotifier(this.otherNotifiers.getIfAvailable(Collections::emptyList));
return new FilteringNotifier(delegate, this.repository);
}
/**
* 重启/离线应用程序发送提醒
* @return
*/
@Primary
@Bean(initMethod = "start", destroyMethod = "stop")
public RemindingNotifier remindingNotifier() { // <2>
RemindingNotifier notifier = new RemindingNotifier(filteringNotifier(), this.repository);
notifier.setReminderPeriod(Duration.ofMinutes(10)); //提醒将每10分钟发送一次
notifier.setCheckReminderInverval(Duration.ofSeconds(10)); //安排每10秒发送一次到期提醒
return notifier;
}
}
配置成功了之后,启动adminservice,在启动客服端,在然后停掉客户端,等待片刻,看是否会有邮件发送,如果收到那么就是配置成功了
客服端离线发送的邮件:
当前客户端重新启动上线发送的邮件:
说明上述我们配置成功了。
名称 | 描述 | 默认值 |
---|---|---|
spring.boot.admin.notify.mail.enabled | 启用邮件通知 | true |
spring.boot.admin.notify.mail.ignore-changes | 以逗号分隔的状态更改列表将被忽略。格式:“ <从状态>:<至状态>”。允许使用通配符。 | "UNKNOWN:UP" |
spring.boot.admin.notify.mail.template | 用于渲染的Thymeleaf模板的资源路径。 | "classpath:/META-INF/spring-boot-admin-server/mail/status-changed.html" |
spring.boot.admin.notify.mail.to | 逗号分隔的邮件收件人列表 | "root@localhost" |
spring.boot.admin.notify.mail.cc | 逗号分隔的复本收件人列表 | |
spring.boot.admin.notify.mail.from | 邮件发件人 | "Spring Boot Admin <noreply@localhost>" |
spring.boot.admin.notify.mail.additional-properties | 可以从模板访问的其他属性 |
配置实例demo代码地址:
SpringBootAdminDemo
欢迎大家在下面讨论,学习。