Nacos 服務(wù)監(jiān)聽

換了Nacos 之后依然需要實(shí)現(xiàn)需求Eureka 的服務(wù)下線監(jiān)聽發(fā)送郵件功能,eureka 使用Spring 的事件監(jiān)聽機(jī)制,實(shí)現(xiàn)起來還是比較簡單。
但是Nacos 同樣為我們提供了Java 的SDK來獲得服務(wù)的監(jiān)聽功能,我們來到Nacos 的官方文檔

image.png

我們發(fā)現(xiàn)服務(wù)監(jiān)聽的話首先需要知道你要監(jiān)聽的服務(wù)名字,其實(shí)這樣子就很不友好,因?yàn)檫@樣子我們要監(jiān)聽所有的服務(wù)就要實(shí)現(xiàn)拿到所有的服務(wù)名稱。
現(xiàn)在又有個(gè)一個(gè)問題監(jiān)聽的代碼我們寫到哪里?
我一開始的時(shí)候是準(zhǔn)備寫在Nacos的源碼里:
image.png

@Component
public class ServiceStatusListner {
    private static final Logger logger = LoggerFactory.getLogger(ServiceStatusListner.class);
    //初始化監(jiān)聽服務(wù)上下線
    @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+"服務(wù)下線","服務(wù)異常下線趕緊去看看");
                        logger.info("============服務(wù)下線"+serviceName);
                        logger.info("============"+instances);
                    }else {

                        logger.info("============服務(wù)上線"+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

但是發(fā)現(xiàn)這樣子的可配置性太低,并且有很大的侵入,不如將上面監(jiān)聽器代碼拿出來單獨(dú)創(chuàng)建一個(gè)微服務(wù)做服務(wù)監(jiān)聽專用。
如果有更好的方法請指正。

上一篇 Dalston.RELEASE版本 Eureka 升級為Nacos

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容