Skip to content

deepexi/egg-apollo

Repository files navigation

egg-apollo

NPM version npm download

egg-apollo插件基于ctrip-apollo v4.4.0,帮助你在eggjs下快速与apollo配置中心进行集成。

安装

通过npm仓库安装

$ npm i @taccisum/egg-apollo --save

使用

// {app_root}/config/plugin.js
exports.apollo = {
  enable: true,
  package: '@taccisum/egg-apollo',
};

配置

// {app_root}/config/config.default.js
exports.apollo = {
  enabled: true,
  timeout: 3000, // 等待超时时间
  namespaces: [ 'application' ]

  // 其它配置沿用自ctrip-apollo,更多请参考 https://github.com/kaelzhang/ctrip-apollo
  appId: 'foo-service', // your application id in apollo
  host: 'http://localhost:8070',  // apollo config service地址
};

使用示例

egg-apollo在启动后会自动从apollo拉取配置并合并到eggjs本地配置中,一般不需要做额外的操作。点击这里查看合并规则

如果确实有需要,你也可以通过以下方式获取到apollo的客户端

const client = app.apollo;
// do something with apollo client

使用参考

配置合并规则

每个应用只能指定唯一的appIdcluster,但可以指定多个namespace,多个namespace的配置会按照一定规则合并后再与本地配置合并。

具体规则如下:

namespaces通过config.apollo.namespaces | array配置,多个namesapce优先级从右到左降低,例如指定了3个namespace

exports.apollo = {
  namespaces: [ 'application', 'tac.foo1', 'tac.foo2' ]
}

其中

application

a=a
b=b
c.d=cd

tac.foo1

a=a1
b=b1

tac.foo2

b=b2

则配置会按照tac.foo2 -> tac.foo1 -> application的顺序合并,合并后的结果将是

a=a1
b=b2
c.d=cd

最终被解析为以下json对象与本地config合并

{
  "a": "a1",
  "b": "b2",
  "c": {
    "d": "cd"
  }
}

问题和建议

empty now.

License

MIT