Nacos 服务监听

换了Nacos 之后依然需要实现需求Eureka 的服务下线监听发送邮件功能,eureka 使用Spring 的事件监听机制,实现起来还是比较简单。
但是Nacos 同样为我们提供了Java 的SDK来获得服务的监听功能,我们来到Nacos 的官方文档

image.png

我们发现服务监听的话首先需要知道你要监听的服务名字,其实这样子就很不友好,因为这样子我们要监听所有的服务就要实现拿到所有的服务名称。
现在又有个一个问题监听的代码我们写到哪里?
我一开始的时候是准备写在Nacos的源码里:
image.png

@Component
public class ServiceStatusListner {
    private static final Logger logger = LoggerFactory.getLogger(ServiceStatusListner.class);
    //初始化监听服务上下线
    @PostConstruct
    public void init() throws Exception {

        Properties properties = System.getProperties();
        properties.setProperty("serverAddr", "192.168.1.7:8848");
        properties.setProperty("namespace", "public");
        NamingService naming = NamingFactory.createNamingService(properties);
        List<String> serviceNames = new ArrayList<>();
        serviceNames.add("service1");
        serviceNames.add("service2");
        serviceNames.add("service3");
        for(String serviceName : serviceNames) {
            naming.subscribe(serviceName, new EventListener() {
                @Override
                public void onEvent(Event event) {
                    List<Instance> instances =  ((NamingEvent)event).getInstances();
                    String serviceName = ((NamingEvent)event).getServiceName();
                    if(instances.size() == 0) {
                        SendMailUtil.sendMail(serviceName+"服务下线","服务异常下线赶紧去看看");
                        logger.info("============服务下线"+serviceName);
                        logger.info("============"+instances);
                    }else {

                        logger.info("============服务上线"+serviceName);
                        logger.info("============"+instances);
                    }
                }
            });
        }
    }
}
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

但是发现这样子的可配置性太低,并且有很大的侵入,不如将上面监听器代码拿出来单独创建一个微服务做服务监听专用。
如果有更好的方法请指正。

上一篇 Dalston.RELEASE版本 Eureka 升级为Nacos

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容