micro-toolkit/event-bus-zeromq

View on GitHub
bin/bus

Summary

Maintainability
Test Coverage
#!/usr/bin/env node

var _ = require('lodash')

var help = {
  's': 'Event Bus Snapshot Address',
  'p': 'Event Bus Publisher Address',
  'c': 'Event Bus Collector Address',
  'u': 'Event Bus db url'
}

var defaultsEnvVars = {
  snapshot: process.env.MICRO_BUS_SNAPSHOT,
  publisher: process.env.MICRO_BUS_PUBLISHER,
  collector: process.env.MICRO_BUS_COLLECTOR,
  store: {
    dbUrl: process.env.MICRO_BUS_DB_URI
  }
}

var defaults = {
  snapshot: 'tcp://127.0.0.1:5556',
  publisher: 'tcp://127.0.0.1:5557',
  collector: 'tcp://127.0.0.1:5558',
  store: {
    dbUrl: 'mongodb://localhost/event_bus'
  }
}

var helpDefaults = {
  s: defaults.snapshot,
  p: defaults.publisher,
  c: defaults.collector,
  u: defaults.store.dbUrl
}

var argv = require('./setup')('bin/bus', help, helpDefaults)

var conf = {
  snapshot: argv.s || null,
  publisher: argv.p,
  collector: argv.c,
  store: {
    dbUrl: argv.u
  }
}

var params = _.defaultsDeep({}, conf, defaultsEnvVars, defaults)
var config = _.pick(params, ['snapshot', 'publisher', 'collector', 'store'])
var busFactory = require('../lib/bus')
var bus = busFactory.getInstance(config)
bus.connect()

function close() {
  bus.close()
  process.exit()
}

process.on('SIGINT', close)
process.on('SIGTERM', close)