3.5.7 • Published 4 years ago

@betit/orion-node-sdk v3.5.7

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

NPM version Build Status Test coverage Greenkeeper badge

Installation

$ npm install @betit/orion-node-sdk

Basic example

Note - You will need to have running all of the orion dependencies

Add the following into foo.js and then run VERBOSE=true node foo.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

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:

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:

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:

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 must be running in the same environment as the service.

You can write a network health check as:

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.

Tests

To run the test suite, first install the dependencies, then run npm test:

$ npm install
$ npm test

License

MIT

3.5.7

4 years ago

3.5.6

4 years ago

3.5.5

5 years ago

3.5.4

5 years ago

3.5.3

5 years ago

3.5.2

5 years ago

3.5.1

5 years ago

3.5.0

5 years ago

3.4.1

5 years ago

3.4.0

5 years ago

3.3.0

5 years ago

3.2.3

5 years ago

3.2.2

5 years ago

3.2.0

6 years ago

3.1.0

6 years ago

3.0.0

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

1.0.0-beta.46

6 years ago

1.0.0-beta.45

6 years ago

1.0.0-beta.44

6 years ago

1.0.0-beta.43

6 years ago

1.0.0-beta.42

6 years ago

1.0.0-beta.41

6 years ago

1.0.0-beta.40

6 years ago

1.0.0-beta.39

6 years ago

1.0.0-beta.38

6 years ago

1.0.0-beta.37

6 years ago

1.0.0-beta.36

6 years ago

1.0.0-beta.35

6 years ago

1.0.0-beta.34

6 years ago

1.0.0-beta.33

6 years ago

1.0.0-beta.32

6 years ago

1.0.0-beta.31

6 years ago

1.0.0-beta.30

6 years ago

1.0.0-beta.29

6 years ago

1.0.0-beta.28

6 years ago

1.0.0-beta.27

6 years ago

1.0.0-beta.26

6 years ago

1.0.0-beta.25

6 years ago

1.0.0-beta.24

6 years ago

1.0.0-beta.23

6 years ago

1.0.0-beta.22

6 years ago

1.0.0-beta.21

6 years ago

1.0.0-beta.20

6 years ago

1.0.0-beta.19

6 years ago

1.0.0-beta.18

6 years ago

1.0.0-beta.17

6 years ago

1.0.0-beta.15

6 years ago

1.0.0-beta.14

6 years ago

1.0.0-beta.13

7 years ago

1.0.0-beta.12

7 years ago

1.0.0-beta.11

7 years ago

1.0.0-beta.10

7 years ago

1.0.0-beta.9

7 years ago

1.0.0-beta.8

7 years ago

1.0.0-beta.7

7 years ago

1.0.0-beta.6

7 years ago