UNPKG

amqplib

Version:

An AMQP 0-9-1 (e.g., RabbitMQ) library and client.

56 lines (44 loc) 1.44 kB
#!/usr/bin/env node var amqp = require('amqplib/callback_api'); var basename = require('path').basename; var keys = process.argv.slice(2); if (keys.length < 1) { console.log('Usage %s pattern [pattern...]', basename(process.argv[1])); process.exit(1); } function bail(err, conn) { console.error(err); if (conn) conn.close(function() { process.exit(1); }); } function on_connect(err, conn) { if (err !== null) return bail(err); process.once('SIGINT', function() { conn.close(); }); conn.createChannel(function(err, ch) { if (err !== null) return bail(err, conn); var ex = 'topic_logs', exopts = {durable: false}; ch.assertExchange(ex, 'topic', exopts); ch.assertQueue('', {exclusive: true}, function(err, ok) { if (err !== null) return bail(err, conn); var queue = ok.queue, i = 0; function sub(err) { if (err !== null) return bail(err, conn); else if (i < keys.length) { ch.bindQueue(queue, ex, keys[i], {}, sub); i++; } } ch.consume(queue, logMessage, {noAck: true}, function(err) { if (err !== null) return bail(err, conn); console.log(' [*] Waiting for logs. To exit press CTRL+C.'); sub(null); }); }); }); } function logMessage(msg) { console.log(" [x] %s:'%s'", msg.fields.routingKey, msg.content.toString()); } amqp.connect(on_connect);