UNPKG

dl

Version:

DreamLab Libs

64 lines (46 loc) 2.31 kB
var core = require('core'); var Event = core.event.Event; var RbmqQueue = core.client.rabbitmq.RbmqQueue; var QueueClient = require('./QueueClient').QueueClient; var QueueIncomingMessage = require('./QueueIncomingMessage').QueueIncomingMessage; var QueueIncomingMessageProcessorFactory = require('./QueueIncomingMessageProcessor').QueueIncomingMessageProcessorFactory; var QueueSubscriber = function() { QueueClient.apply(this, arguments); this._exclusiveRoutingKey = null; }; QueueSubscriber.prototype = Object.create(QueueClient.prototype); QueueSubscriber.prototype.setExclusiveRoutingKey = function (value) { this._exclusiveRoutingKey = value; }; QueueSubscriber.prototype._onConnected = function() { console.log('QueueSubscriber/_onConnected'); var queueConfig = this._credentials.getQueueConfig(); if (queueConfig.exclusive && this._exclusiveRoutingKey !== null) { var bindings = queueConfig.bindings; queueConfig.bindings = []; for (var i = 0, l = bindings.length; i < l; i++) { queueConfig.bindings.push(bindings[i]); queueConfig.bindings.push({ exchange: bindings[i].exchange, routingKey: this._exclusiveRoutingKey }); } } this._rbmqChannel = new RbmqQueue(this._rbmqConnection, queueConfig); this._rbmqChannel.addEventListener(RbmqQueue.Event.MESSAGE_RECEIVED, this._onMessageReceived, this); this._messageProcessor = QueueIncomingMessageProcessorFactory.get(queueConfig, this._rbmqConnection, this._logger); QueueClient.prototype._onConnected.call(this); }; QueueSubscriber.prototype._onMessageReceived = function(ev) { var queueMsg = new QueueIncomingMessage(ev.data, this._logger, this._messageProcessor); var that = this; console.log('QueueSubscriber/_onMessageReceived', queueMsg.getMessageId()); process.nextTick(function() { that.dispatchEvent(new Event(QueueSubscriber.Event.MESSAGE_RECEIVED, queueMsg)); }); }; QueueSubscriber.Event = {}; QueueSubscriber.Event.CONNECTED = QueueClient.Event.CONNECTED; QueueSubscriber.Event.DISCONNECTED = QueueClient.Event.DISCONNECTED; QueueSubscriber.Event.MESSAGE_RECEIVED = 'QueueSubscriber.Event.MESSAGE_RECEIVED'; exports.QueueSubscriber = QueueSubscriber;