UNPKG

sqmicro-commons

Version:

Commons for SQ analytics microservices.

88 lines (66 loc) 1.92 kB
# Общие инструменты для компонентов sqmicro: обзор ## Инсталляция ``` npm install --save sqmicro-commons ``` ## bindEvents(target, eventTable, context, args) Связать обработчики событий из таблицы с целью. ```javascript const { bindEvents, log } = require('sqmicro-commons'); const EVENT_TABLE = { close: function(name) { log.info(`Stream '${name}' was closed`); }, error: function(name, error) { log.info(`Error in stream '${name}': `, error); } }; // ... bindEvents(stream, EVENT_TABLE, stream, ['my stream']) ``` ## log Логирование. ```javascript const { log } = require('sqmicro-commons'); log.error('Error'); log.warn('Warning'); log.info('Information'); log.debug('Debugging the code'); log.trace('Tracing the code'); log.log('Useless gossip'); ``` ## Retrier Повторные попытки асинхронных вызовов. ```javascript const { log, Retrier } = require('sqmicro-commons'); const retrier = new Retrier(); retrier.retry(() => getConnectionPromise()).then( console.log, console.error ) ``` ## Throttled Дросселирование вызовов методов дочерних классов. ```javascript const { log, Throttled } = require('sqmicro-commons'); class MyClass extende Throttled(Object) { constructor() { super(); this.throttleLevel = 75; this.throttledMethods = ['sometimes']; } sometimes() { return 'value'; } } const my = new My(); const max = 100000; const actualCalls = 0; for (let i = 0; i < max; i++) { let res = my.sometimes(); if (res.isThrottled) { continue; } actualCalls++; if (actualCalls % 1000 === 0) { log.info(`Actual return value is ${res.value}`); } } log.info(`Only ${100 * actualCalls / max}% of calls were performed`); ```