package org.dromara.modules.monitor.notifier; 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.domain.values.InstanceId; import de.codecentric.boot.admin.server.notify.AbstractEventNotifier; import io.micrometer.core.lang.NonNullApi; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import reactor.core.publisher.Mono; /** * 自定义事件通知处理 * * @author Lion Li */ @Slf4j @Component public class CustomNotifier extends AbstractEventNotifier { protected CustomNotifier(InstanceRepository repository) { super(repository); } @Override @SuppressWarnings("all") protected Mono doNotify(InstanceEvent event, Instance instance) { return Mono.fromRunnable(() -> { // 实例状态改变事件 if (event instanceof InstanceStatusChangedEvent) { String registName = instance.getRegistration().getName(); String instanceId = event.getInstance().getValue(); String status = ((InstanceStatusChangedEvent) event).getStatusInfo().getStatus(); log.info("Instance Status Change: [{}],[{}],[{}]", registName, instanceId, status); } }); } }