UNPKG

micro-toolkit-event-bus-zeromq

Version:

The ØMQ implementation of event BUS based on ØMQ Clone Pattern and Clustered Hashmap Protocol.

38 lines (28 loc) 1.07 kB
var _ = require('lodash') var zmq = require('zeromq') var Logger = require('../logger') var log = Logger.getLogger('micro.bus.publisher') var evtFactory = require('./event') var defaults = { address: 'tcp://127.0.0.1:5558', producerId: null } function send(address, producer, topic, data) { var evt = evtFactory.getInstance(producer, topic, data) var logData = _.pick(evt, ['producer', 'timestamp', 'topic', 'uuid']) logData.data = data //in the logs the non serialized data should be present log.debug(logData, 'Published event to topic %s', topic) var socket = zmq.socket('dealer') socket.connect(address) socket.send(evt.toFrames()) socket.disconnect(address) } function getInstance(configuration) { var config = _.defaults({}, configuration, defaults) if (!config.producerId){ throw new Error('Invalid producer id') } log.info("Producer '%s' opened a publisher stream to %s", config.producerId, config.address) return { send: _.partial(send, config.address, config.producerId) } } module.exports = { getInstance: getInstance }