背景
项目配置迁移到Apollo之后,通过统一的配置管理及配置监听使得项目配置修改的成本大大降低。
但是,在使用Apollo的过程中,强哥也遇到一个问题:如果我们要获取Apollo下的namespace信息需要通过ConfigServer.getConfig(String namespace)方法来获取,但是使用这个方法的前提是我们必须知道当前项目下有哪些namespace,或者说我们只能使用我们已知的namespace。这就对我们的代码扩展性产生了限制,假如项目已经上线,而之后我们又要新增namespace或者修改已有namespace名称,就必须更改代码将对应的namespace加入或修改,然后重新发布。
虽然我们不会经常修改namespace,但是,有这么一个痛点,就让人很不舒服。而且从官方文档中,强哥“并没有”找到:通过项目app_id获取到Apollo上对应的该项目下的所有namespace的方法。
那么这个问题要怎么解决呢?强哥今天就带大家通过Apollo源码来看看如何找到解决思路。
入手点
按常理出牌,我们先在Google中搜索一下我们的问题(这里提一下,别用百度,他么的根本定位不到要搜的点):

第一条搜索结果点进去看看,是其他开发者在github上提的issue:

我们可以看到,作者的回复是:通过open api来获取所有namespace。也就是官方文档中的这块内容:

本文探讨了Apollo配置管理系统中获取所有namespace信息的难题,通过深入源码解析,提供了一种绕过繁琐官方流程的简便方法,直接调用底层API,简化项目配置管理。
最低0.47元/天 解锁文章
1212





