rascal
Version:
An advanced RabbitMQ / AMQP client built on amqplib
39 lines (32 loc) • 1.31 kB
JavaScript
const Rascal = require('../..');
const config = require('./publisher-config');
const random = require('random-readable');
const max = parseInt(process.argv[2], 10) || Infinity;
Rascal.Broker.create(Rascal.withDefaultConfig(config), (err, broker) => {
if (err) throw err;
broker.on('error', console.error);
let count = 0;
const stream = random
.createRandomStream()
.on('error', console.error)
.on('data', (data) => {
broker.publish('demo_pub', data, (err, publication) => {
if (err) throw err;
else if (count >= max) stream.destroy();
else count++;
publication.on('error', console.error);
});
})
.on('close', () => {
console.log(`Published ${count} messages`)
broker.shutdown();
}); ;
broker.on('busy', (details) => {
console.log(Date.now(), `Pausing vhost: ${details.vhost} (mode: ${details.mode}, queue: ${details.queue}, size: ${details.size}, borrowed: ${details.borrowed}, available: ${details.available})`);
stream.pause();
});
broker.on('ready', (details) => {
console.log(Date.now(), `Resuming vhost: ${details.vhost} (mode: ${details.mode}, queue: ${details.queue}, size: ${details.size}, borrowed: ${details.borrowed}, available: ${details.available})`);
stream.resume();
});
});