0.1.7 • Published 5 years ago

node-apollo-client v0.1.7

Weekly downloads
7
License
MIT
Repository
github
Last release
5 years ago

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
sceneinfluenceconfigs source
failed to connect apollo at beginingxuse local configs directly
failed to connect apolloxuse cached apollo configs
failed to connect apollo and wish to update configsxupdate cached configs temporarily
failed to receive notificationsxfetch configs periodically fetch from apollo
failed to fetch from apollo cachexsubscribe 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

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago