node-apollo-client

0.1.7 • Public • Published

node-apollo-client Build Status NPM Version node

node apollo client for Ctrip Apollo

Features:

  1. implement all APIs described in official documentation
  2. high availability by caching configs in local files which simulate JAVA SDK does.
  3. written in TypeScript and typing support
  4. naturally async await function calling, no event or callback mixed-in.

client logic and availability

local configs object
  \-+= local cached config files
    \-+= fetch from Apollo DB at once
      \-+= fetch from Apollo cache periodically (default to 5 minutes)
        \-+= subscribe notification and fetch from Apollo DB if release tag changed
          \-+= update local configs by API: refreshConfigs
scene influence configs source
failed to connect apollo at begining x use local configs directly
failed to connect apollo x use cached apollo configs
failed to connect apollo and wish to update configs x update cached configs temporarily
failed to receive notifications x fetch configs periodically fetch from apollo
failed to fetch from apollo cache x subscribe notification and fetch from DB

Usage

install package from npm

npm install node-apollo-client

const Apollo = require('node-apollo-client')
 
// Instantiate Apollo
const apollo = new Apollo({
  configServerUrl: 'your-config-server-url',
  appId: 'your-app-id',
  cluster: 'default', // [optional] default to `default`
  namespaces: ['application'],  // default to `['application']`, this is the namespaces that you want to use or maintain.
  initialConfigs: {
    application: {  // this is default namespace name
      foo: 'Mars',
      bar: 'Jupiter'
    },
  }, // [optional]
  listenOnNotification: true, // [optional] default to true
  fetchCacheInterval: 5 * 60e3, // [optional] default to 5 minutes. can be customize but 30s or shorter time are not acceptable.
  cachedConfigFilePath: '/tmp' // [optional] cached configs path, default to system's tmp directory, for linux it's basically '/tmp'.
});
 
// fetch single config
await apollo.fetchConfig({ key: 'foo' });
// return 'Mars'
 
// fetch multiple configs
await apollo.fetchConfigs({ keys: [ 'foo', 'bar' ] });
// return { foo: 'Mars', bar: 'Jupiter' }
 
// refresh local configs (merely used when Apollo is unavailable)
apollo.refreshConfigs({ configs: { foo: 'Mercury' } });
// check out key `foo`
await apollo.fetchConfig({ key: 'foo' });
// return { foo: 'Mercury' }

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i node-apollo-client

Weekly Downloads

2

Version

0.1.7

License

MIT

Unpacked Size

52.5 kB

Total Files

10

Last publish

Collaborators

  • sinux