Nacos-Sync同步Eureka服务到指定命名空间

Nacos-Sync同步Eureka服务到指定命名空间

默认情况下Nacos-Sync只能同步到public空间内, 但是某些时候我们需要同步到指定命名空间内, 此时只需做一些简单的修改即可满足.

首先下载源码之后切换到对应版本分支, 我用的是0.4.4的分支. 找到同步eureka的实现类EurekaSyncToNacosServiceImpl对应的方法sync(TaskDO taskDO)

EurekaNamingService eurekaNamingService = eurekaServerHolder.get(taskDO.getSourceClusterId(), null);
NamingService destNamingService = nacosServerHolder.get(taskDO.getDestClusterId(), null);

其中最后一个传null的参数就是name_space,将其改为以下代码然后重新打包即可

EurekaNamingService eurekaNamingService = eurekaServerHolder.get(taskDO.getSourceClusterId(), taskDO.getNameSpace());
NamingService destNamingService = nacosServerHolder.get(taskDO.getDestClusterId(), taskDO.getNameSpace());

taskDO对应task表. 在界面上创建完同步任务后回到数据库中直接将name_space字段改为对应命名空间id即可. 注意 该代码未经完整测试, 生产环境使用需谨慎.

附上已经打包好的jar , 将原nacosSync-server.jar备份后覆盖. https://download..net/download/q412086027/15557967

经验分享 程序员 微信小程序 职场和发展