micro-toolkit/event-bus-zeromq

View on GitHub
bin/publisher

Summary

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

var _ = require('lodash')

var help = {
  'a': 'Event Bus Address',
  'p': 'Producer identifier',
  't': 'Topic used to publish events',
  'i': 'Publish interval (in ms)'
}

var defaults = {
  address: 'tcp://127.0.0.1:5558',
  producerId: 'command_line_producer',
  topic: '/examples/producer',
  interval: 1000,
  data: [{id: '1', state: 'changed'}]
}

var helpDefaults = {
  a: defaults.address,
  p: defaults.producerId,
  t: defaults.topic,
  i: defaults.interval,
  data: defaults.data
}

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

var conf = {
  address: argv.a,
  producerId: argv.p,
  topic: argv.t,
  interval: argv.i,
  data: argv._.length > 0 ? argv._ : undefined
}

var params = _.defaults({}, conf, defaults)
var config = _.pick(params, ['address', 'producerId'])
var publisherFactory = require('../lib/publisher')
var publisher = publisherFactory.getInstance(config)

setInterval(function(){
  params.data.forEach(function(data){
    publisher.send(params.topic, data)
  })
}, params.interval)