UNPKG

3.03 kBMarkdownView Raw
1# microkit [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![Coverage percentage][coveralls-image]][coveralls-url]
2> Node.js microservice toolkit
3
4Abstraction toolkit for microservices, to make nodejs developers happy again.
5
6## Installation
7
8```sh
9$ npm install --save microkit
10```
11
12## Usage
13
14```js
15var MicroKit = require('microkit');
16
17// Instantiate MicroKit
18var microkit = new MicroKit({
19 name: 'myAwesomeService',
20 logLevel: 'info',
21 catchGlobal: true, // catch global errors
22 queue: {
23 name: 'amqp',
24 url: "amqp://localhost",
25 queue: 'myAwesomeService'
26 }, // queue provider config
27 error: {name: 'raven', url: "https://dd..ba:d8..35@app.getsentry.com/24343"}, // error reporter config
28 stats: {name: 'statsd', host: "statsd.example.com"}, // stats reporter config
29 api: {
30 name: 'swagger',
31 services: {
32 serviceA: {url: 'http://api.domain.com/swagger.yaml'},
33 }
34 }
35});
36
37/** or for development it will log on stdout
38 * var microkit = new MicroKit({name: 'myAwesomeService'});
39 **/
40
41// Logging
42microkit.logger.debug('message', {key: 'value'});
43microkit.logger.info('message', {key: 'value'});
44microkit.logger.warn('message', {key: 'value'});
45microkit.logger.fatal(new Error("some error"));
46microkit.logger.error('message', {key: 'value', err: new Error("some error")});
47
48var logger = microkit.logger.create('componentName', {some: 'context'});
49logger.info('message', {key: 'value'});
50
51// Queue
52microkit.queue.publish({key: 'value'}, {some: 'data'});
53microkit.queue.publish({key: {key: 'value'}, message: {key: 'value'}});
54microkit.queue.subscribe({key: 'value'}, (msg, info) => {
55 console.log("message", msg);
56 console.log("key", info.key);
57});
58
59// Error reporting
60microkit.error.capture(new Error('some error'));
61
62// Metrics
63microkit.metrics.send('some.metric', 10, {tag1: 'value', tag2: 'value2'});
64
65// Exit handling
66microkit.onExit(() => server.close());
67
68// Express integration (logging, error reporting)
69app.use(microkit.express.preHandler); // before all middlewares
70app.use(microkit.express.postHandler); // after middlewares
71
72// API calling
73microkit.api.call('serviceA', 'getUser', {id: '123-456'});
74
75// config
76microkit.config.get('key.value');
77
78// common errors
79const MyConnectionError = microkit.errors.ConnectionError.extend({
80 name: 'MyConnectionError'
81});
82throw new MyConnectionError({code: 'database_error', error: err});
83```
84
85## License
86
87MIT © [ProteusLabs](https://proteuslabs.io)
88
89[npm-image]: https://badge.fury.io/js/microkit.svg
90[npm-url]: https://npmjs.org/package/microkit
91[travis-image]: https://travis-ci.org/proteuslabs/microkit.svg?branch=master
92[travis-url]: https://travis-ci.org/proteuslabs/microkit
93[daviddm-image]: https://david-dm.org/proteuslabs/microkit.svg?theme=shields.io
94[daviddm-url]: https://david-dm.org/proteuslabs/microkit
95[coveralls-image]: https://coveralls.io/repos/proteuslabs/microkit/badge.svg
96[coveralls-url]: https://coveralls.io/r/proteuslabs/microkit