UNPKG

microservice-support-toolkit

Version:

A global module with commons utilities for microservice support

49 lines (45 loc) 1.56 kB
const amqp = require('amqplib/callback_api'); const { fetch } = require('./spring-cloud-config'); const logger = require('./logger'); const subscribeToSpringCloudBusTopic = ({ username, password, host, port }) => ( new Promise((resolve, reject) => { const RABBITMQ_URL = `amqp://${username}:${password}@${host}:${port}`; amqp.connect(RABBITMQ_URL, (error0, connection) => { if (!connection) { logger.error('Could not connect to RabbitMQ'); process.exit(1); } if (error0) { return reject(error0); } connection.createChannel((error1, channel) => { if (error1) return reject(error1); const exchange = 'springCloudBus'; channel.assertExchange(exchange, 'topic', { durable: true }); channel.assertQueue('', { autoDelete: true, exclusive: true }, (error2, q) => { if (error2) return reject(error2); logger.info(`Waiting for configs = require(Spring Cloud Bus | exchange: ${exchange} | pattern # | bindQueue: ${q.queue}`); channel.bindQueue(q.queue, exchange, '#'); channel.consume(q.queue, (msg) => { fetch().then(() => { const event = JSON.parse(msg.content.toString()); logger.info(`${new Date(event.timestamp)} ${event.type} -> ${event.originService} -> ${event.destinationService}`) }) }, { noAck: true }); resolve(); }); }); }); }) ); module.exports = { subscribeToSpringCloudBusTopic };