@gatehub/microkit
v0.13.2
Published
Opiniated microservice toolkit
Downloads
90
Maintainers
Readme
microkit
Node.js microservice toolkit
Abstraction toolkit for microservices, to make nodejs developers happy again.
Installation
$ npm install --save @gatehub/microkit
Usage
var MicroKit = require('microkit');
// Instantiate MicroKit
var microkit = new MicroKit({
name: 'myAwesomeService',
environment: 'production',
logLevel: 'info',
catchGlobal: true, // catch global errors
queue: {
name: 'amqp',
url: "amqp://localhost",
queue: 'myAwesomeService'
}, // queue provider config
error: {name: 'sentry', url: "https://dd..ba:[email protected]/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 © GateHubNet