UNPKG

microservice-support-stack

Version:

A global module with commons utilities to support for microservices

50 lines (44 loc) 1.63 kB
const { hystrixSSEStream: HystrixStream, commandFactory: CommandFactory } = require('hystrixjs'); const logger = require('./logger'); const stream = (request, response) => { logger.info('Starting hystrix stream...'); response.append('Content-Type', 'text/event-stream;charset=UTF-8'); response.append('Cache-Control', 'no-cache, no-store, max-age=0, must-revalidate'); response.append('Pragma', 'no-cache'); return HystrixStream.toObservable().subscribe( sseData => response.write('data: ' + sseData + '\n\n'), err => console.error(err), () => response.end() ); }; const commandBuilder = (makeRequest, fallbackTo, errorHandler, serviceName, commandKey, configs = {}) => { const TIMEOUT = configs.timeout || 3000; const STATISTICAL_WINDOW_LENGTH = configs.statisticalWindowLength || 10000; const STATISTICAL_WINDOW_NUMBER_OF_BUCKETS = configs.statisticalWindowNumberOfBuckets || 10; CommandFactory.resetCache(); if (errorHandler) { return CommandFactory.getOrCreate(commandKey) .run(makeRequest) .timeout(TIMEOUT) .fallbackTo(fallbackTo) .statisticalWindowLength(STATISTICAL_WINDOW_LENGTH) .statisticalWindowNumberOfBuckets(STATISTICAL_WINDOW_NUMBER_OF_BUCKETS) .errorHandler(errorHandler) .build(); } else { return CommandFactory.getOrCreate(commandKey) .run(makeRequest) .timeout(TIMEOUT) .fallbackTo(fallbackTo) .statisticalWindowLength(STATISTICAL_WINDOW_LENGTH) .statisticalWindowNumberOfBuckets(STATISTICAL_WINDOW_NUMBER_OF_BUCKETS) .build(); } }; module.exports = { commandBuilder, stream, };