microkit

0.12.2 • Public • Published

microkit NPM version Build Status Dependency Status Coverage percentage

Node.js microservice toolkit

Abstraction toolkit for microservices, to make nodejs developers happy again.

Installation

$ npm install --save microkit

Usage

var MicroKit = require('microkit');
 
// Instantiate MicroKit
var microkit = new MicroKit({
  name: 'myAwesomeService',
  logLevel: 'info',
  catchGlobal: true, // catch global errors
  queue: {
    name: 'amqp',
    url: "amqp://localhost",
    queue: 'myAwesomeService'
  }, // queue provider config
  error: {name: 'raven', url: "https://dd..ba:d8..35@app.getsentry.com/24343"}, // error reporter config
  stats: {name: 'statsd', host: "statsd.example.com"}, // stats reporter config
  api: {
    name: 'swagger',
    services: {
      serviceA: {url: 'http://api.domain.com/swagger.yaml'},
    }
  }
});
 
/** or for development it will log on stdout
 *  var microkit = new MicroKit({name: 'myAwesomeService'});
 **/
 
// Logging
microkit.logger.debug('message', {key: 'value'});
microkit.logger.info('message', {key: 'value'});
microkit.logger.warn('message', {key: 'value'});
microkit.logger.fatal(new Error("some error"));
microkit.logger.error('message', {key: 'value', err: new Error("some error")});
 
var logger = microkit.logger.create('componentName', {some: 'context'});
logger.info('message', {key: 'value'});
 
// Queue
microkit.queue.publish({key: 'value'}, {some: 'data'});
microkit.queue.publish({key: {key: 'value'}, message: {key: 'value'}});
microkit.queue.subscribe({key: 'value'}, (msg, info) => {
  console.log("message", msg);
  console.log("key", info.key);
});
 
// Error reporting
microkit.error.capture(new Error('some error'));
 
// Metrics
microkit.metrics.send('some.metric', 10, {tag1: 'value', tag2: 'value2'});
 
// Exit handling
microkit.onExit(() => server.close());
 
// Express integration (logging, error reporting)
app.use(microkit.express.preHandler); // before all middlewares
app.use(microkit.express.postHandler); // after middlewares
 
// API calling
microkit.api.call('serviceA', 'getUser', {id: '123-456'});
 
// config
microkit.config.get('key.value');
 
// common errors
const MyConnectionError = microkit.errors.ConnectionError.extend({
  name: 'MyConnectionError'
});
throw new MyConnectionError({code: 'database_error', error: err});

License

MIT © ProteusLabs

Package Sidebar

Install

npm i microkit

Weekly Downloads

9

Version

0.12.2

License

MIT

Last publish

Collaborators

  • jaka