@betit/orion-node-sdk
Version:
SDK for orion
155 lines (107 loc) • 3.68 kB
Markdown
[![NPM version][npm-image]][npm-url]
[![Build Status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
[](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