airship-server
Version:
Airship is a framework for Node.JS & TypeScript that helps you to write big, scalable and maintainable API servers.
43 lines • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const BotOutputMessage_1 = require("../../../hhEvents/domain/entity/notifications/message/BotOutputMessage");
const amqp = require('amqplib/callback_api');
const env = process.env['NODE_ENV'] || 'development';
const QUEUE = {
'production': 'hh_events_notifications',
'test': 'hh_events_notifications_testing',
'development': 'hh_events_notifications'
};
class RabbitBroadcastProvider {
constructor(logger, rabbitLink) {
this._logger = logger;
this._rabbitLink = rabbitLink;
}
getMessages(callback) {
this._logger.log('Connecting to Rabbit');
amqp.connect(this._rabbitLink, (err, conn) => {
if (err) {
this._logger.error('Error connecting to Rabbit', err);
process.exit();
}
conn.createChannel((err, ch) => {
if (err) {
this._logger.error('Error connecting to Rabbit', err);
process.exit();
}
//var q = 'hh_events_notifications'
var q = QUEUE[env];
ch.assertQueue(q, { durable: false });
ch.consume(q, msg => {
let message = BotOutputMessage_1.default.deserialize(JSON.parse(msg.content.toString('utf8')));
this._logger.log('Got message to send ', message);
callback(message, () => {
ch.ack(msg);
});
}, { noAck: false });
});
});
}
}
exports.default = RabbitBroadcastProvider;
//# sourceMappingURL=RabbitBroadcastProvider.js.map