bin/zss-broker
#!/usr/bin/env node
var Broker = require('../lib/broker');
var Logger = require('logger-facade-nodejs');
var LoggerConsolePlugin = require('logger-facade-console-plugin-nodejs');
// this is the default config
var config = {
level: process.env.MICRO_BROKER_LOG_LEVEL || 'info',
timeFormat: process.env.MICRO_BROKER_LOG_TIMEFORMAT || 'YYYY-MM-DD HH:mm:ss.SSS',
messageFormat: '%time | %level | %logger - %msg',
json: process.env.MICRO_BROKER_LOG_JSON || false
};
var plugin = new LoggerConsolePlugin(config);
Logger.use(plugin);
function getIntOrDefault(val, defaultVal) {
var num = parseInt(val, 10)
if (num) { return num; }
return defaultVal;
}
var broker = new Broker({
backend: process.env.MICRO_BROKER_BE_ADDR || 'tcp://0.0.0.0:7776',
frontend: process.env.MICRO_BROKER_FE_ADDR || 'tcp://0.0.0.0:7777',
smi: {
// heartbeat interval in ms
heartbeat: getIntOrDefault(process.env.MICRO_BROKER_HEARTBEAT, 1000),
// max ttl for a service in ms
maxTTL: getIntOrDefault(process.env.MICRO_BROKER_MAX_TTL, 2000),
// refresh service ttl update interval in ms
updateInterval: getIntOrDefault(process.env.MICRO_BROKER_UPDATE_INT, 500)
}
});
function close(exitSignal) {
broker.stop();
// logging is deferred, to prevent losing log information we should exit
// on next available execution
setImmediate(function () { process.exit(exitSignal) });
}
process.on('uncaughtException', function (err) {
log.error(err, 'The application exit due to an uncaught exception, reson: %s',
err.message);
close(1);
});
process.on('SIGINT', close);
process.on('SIGTERM', close);
broker.run();