UNPKG

@betit/orion-node-sdk

Version:
155 lines (107 loc) 3.68 kB
[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Test coverage][coveralls-image]][coveralls-url] [![Greenkeeper badge](https://badges.greenkeeper.io/gig/orion-node-sdk.svg)](https://greenkeeper.io/) ## Installation ```sh $ npm install @betit/orion-node-sdk ``` ## Basic example ### Note - You will need to have running all of the orion [dependencies](https://github.com/gig/orion) Add the following into `foo.js` and then run `VERBOSE=true node foo.js` ```js const ORION = require('@betit/orion-node-sdk'); const FOO = new ORION.Service('foo'); FOO.handle('get', (req, reply) => { reply(new ORION.Response('foo')); }); FOO.listen(() => FOO.logger.createMessage('ready').send()); ``` Then add the following into `bar.js` and then run `node bar.js` ```js const ORION = require('@betit/orion-node-sdk'); const BAR = new ORION.Service('bar'); const REQ = new ORION.Request('/foo/get'); BAR.call(REQ, res => { // do stuff }); ``` You can find more detailed examples in the `examples` folder. ## Async example This utility also supports functionality with Promises, so the following code can be also used: ```js const ORION = require('@betit/orion-node-sdk'); const FOO = new ORION.Service('foo'); FOO.handle('get', async (req) => { return new ORION.Response('foo'); }); async function initFOO() { await FOO.listen(); FOO.logger.createMessage('ready').send() } init().then(exit); ``` And in `bar.js`: ```js const ORION = require('@betit/orion-node-sdk'); const BAR = new ORION.Service('bar'); const REQ = new ORION.Request('/foo/get'); async function main() { const res = await BAR.call(REQ); // do stuff } main().then(exit); ``` Also, subscriptions can now be looped forever using: ```js const ORION = require('@betit/orion-node-sdk'); const BAR = new ORION.Service('bar'); async function processEvents() { const producer = BAR.onAsync("event"); while (true) { const event = await producer.consume(); } } ... ``` ## Health checks Support for health checking is present if the services are running with the environment variable `WATCHDOG=true`. Also, a [watchdog](https://github.com/GiG/orion-watchdog) must be running in the same environment as the service. You can write a network health check as: ```ts const ping = require('ping'); const host = '1.1.1.1'; async function checkNetwork(): Promise<[string, OrionError | undefined]> { const isAlive = await ping.promise.probe(host); if (!isAlive) { return [`Can't connect to ${host}`, new OrionError('CRIT')]; } else { return ['', undefined]; } } const healthCheck = { checkIsWorking: checkNetwork, name: 'have_I_external_net', timeout: 1000, }; const SERVICE = new Service('service_name'); SERVICE.registerHealthCheck(envDependency); ``` ## Tracer The zipkin tracer is disabled by default and you can enable it using the `TRACER_ENABLED` env. variable with possible values of `1` or `true` # Documentation Auto-generated documentation is located [here](https://gig.github.io/orion-node-sdk/). ## Tests To run the test suite, first install the dependencies, then run `npm test`: ```bash $ npm install $ npm test ``` ## License [MIT](https://github.com/GiG/orion-node-sdk/blob/master/LICENSE) [npm-image]: https://badge.fury.io/js/%40betit%2Forion-node-sdk.svg [npm-url]: https://www.npmjs.com/package/@betit/orion-node-sdk [travis-image]: https://travis-ci.org/GiG/orion-node-sdk.svg?branch=master [travis-url]: https://travis-ci.org/GiG/orion-node-sdk [coveralls-image]: https://coveralls.io/repos/github/GiG/orion-node-sdk/badge.svg [coveralls-url]: https://coveralls.io/github/GiG/orion-node-sdk