package com.ljm.boot.admin.server.notifier;
import com.ljm.boot.admin.server.util.EmailUtil;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
/**
* 自定义的事件通知者
*/
@Component
public class CustomNotifier extends AbstractStatusChangeNotifier {
private static final Logger logger = LoggerFactory.getLogger(CustomNotifier.class);
@Value("${client.notify.mail.subject}")
private String subject;
@Autowired
EmailUtil emailUtil;
//邮件模板内容信息
private String content="<p style=\"white-space: normal;\">亲爱的运维人员:</p><p style=\"white-space: normal;\"> 您好!</p><p style=\"white-space: normal;\"> 您的运维管理的服务程序已经<strong>${服务状态}</strong>,</p><p style=\"white-space: normal;\">服务名称是:<strong>${服务名称}</strong>,服务部署的服务器ip是:<strong>${服务器ip地址}。</strong></p><p style=\"white-space: normal;\">请查看及时服务运行状态,.</p><p style=\"white-space: normal;\">如有打扰,请见谅!</p><p style=\"white-space: normal;\"><br/></p><p style=\"white-space: normal;\"><strong>服务监控中心!</strong></p><p><br/></p>'";
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());
//获取服务状态 status UP上线,OFFLINE离职
String status = ((InstanceStatusChangedEvent) event).getStatusInfo().getStatus();
//服务名称,
String clientName = instance.getRegistration().getName().toLowerCase();
//服务所在的服务器ip地址
String clientServerUrl = instance.getRegistration().getServiceUrl();
String statusName="OFFLINE".equals(status)?"已经宕机了":"已经重新上线!";
if ("OFFLINE".equals(status) || "UP".equals(status)) {
emailUtil.sendEmail(subject + "-" + clientName + "-" + status, repelateMessage(content,statusName,clientName,clientServerUrl));
}
} else {
logger.info("Instance {} ({}) {}", instance.getRegistration().getName(), event.getInstance(),
event.getType());
}
});
}
/**
* 替换邮件模板内占位符
*/
private String repelateMessage(String msg, String state, String appName, String serverIp) {
msg = msg.replace("${服务状态}", state);
msg = msg.replace( "${服务名称}", appName);
msg =msg.replace("${服务器ip地址}", serverIp);
return msg;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
使用springboot admin对springboot应用进行监控.zip
共9个文件
java:4个
xml:3个
yml:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 49 浏览量
2023-08-26
10:55:23
上传
评论
收藏 10KB ZIP 举报
温馨提示
基于springboot框架实现一些常用的功能
资源推荐
资源详情
资源评论
收起资源包目录
使用springboot admin对springboot应用进行监控.zip (9个子文件)
admin-client
pom.xml 1KB
src
main
resources
application.yml 459B
java
com
ljm
boot
admin
client
ClientApplication.java 330B
pom.xml 1KB
admin-server
pom.xml 2KB
src
main
resources
application.yml 681B
java
com
ljm
boot
admin
server
MonitorApplication.java 493B
notifier
CustomNotifier.java 4KB
util
EmailUtil.java 2KB
共 9 条
- 1
资源评论
sjx_alo
- 粉丝: 1w+
- 资源: 1193
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功