Spring-Boot-Admin-快速集成通知
一、邮件通知
1、核心代码-admin-server配置
pom.xml 中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
application.yml 添加配置
# 邮件
mail:
host: smtp.qq.com
username: 814056815@qq.com
# QQ授权码 , 不是QQ 密码,在QQ邮箱中申请
password: XXXXXXXXX
boot:
admin:
notify:
mail:
# to和from都要配置,否则发送邮件时会报错
to: 814056815@qq.com
from: 814056815@qq.com
申请QQ授权码:
验证:
二、自定义通知
2.1、方式
-
实现Notifier接口
-
通过扩展AbstractEventNotifier或AbstractStatusChangeNotifier
2.2、核心代码
添加类:CustomNotifier 继承 AbstractStatusChangeNotifier
package yuanlx.adminserver.config;
import de.codecentric.boot.admin.server.domain.entities.Instance;
import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
import de.codecentric.boot.admin.server.domain.events.InstanceEvent;
import de.codecentric.boot.admin.server.domain.events.InstanceStatusChangedEvent;
import de.codecentric.boot.admin.server.notify.AbstractStatusChangeNotifier;
import de.codecentric.boot.admin.server.notify.LoggingNotifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
/**
* @Description 请描述下该类是做什么的
* @Author <a href="mailto:yuanlx@smartdot.com.cn">袁凌霄</a>
* @Date 2021/5/31 16:13
* @Verson 1.0
**/
@Component
public class CustomNotifier extends AbstractStatusChangeNotifier {
private static final Logger LOGGER = LoggerFactory.getLogger( LoggingNotifier.class);
public CustomNotifier(InstanceRepository repository) {
super(repository);
}
@Override
protected Mono<Void> doNotify(InstanceEvent event, Instance instance) {
return Mono.fromRunnable(() -> {
if (event instanceof InstanceStatusChangedEvent) {
LOGGER.info("Instance {} ({}) is {}", instance.getRegistration().getName(), event.getInstance(),
((InstanceStatusChangedEvent) event).getStatusInfo().getStatus());
String status = ((InstanceStatusChangedEvent) event).getStatusInfo().getStatus();
switch (status) {
// 健康检查没通过
case "DOWN":
System.out.println("健康检查没通过");
break;
// 服务离线
case "OFFLINE":
System.out.println("服务离线");
break;
//服务上线
case "UP":
System.out.println("服务上线");
break;
// 服务未知异常
case "UNKNOWN":
System.out.println("服务未知异常");
break;
default:
break;
}
} else {
LOGGER.info("Instance {} ({}) {}", instance.getRegistration().getName(), event.getInstance(),
event.getType());
}
});
}
}