43 lines
969 B
JavaScript
43 lines
969 B
JavaScript
#!/usr/bin/env node
|
|
|
|
'use strict';
|
|
|
|
// NB this requires the module 'co':
|
|
// npm install co
|
|
const co = require('co');
|
|
const amqp = require('amqplib');
|
|
|
|
co(function* () {
|
|
// connection errors are handled in the co .catch handler
|
|
const conn = yield amqp.connect('amqp://localhost');
|
|
|
|
// try catch will throw any errors from the yielding the following promises to the co .catch handler
|
|
try {
|
|
const q = 'hello';
|
|
const msg = 'Hello World!';
|
|
|
|
// use a confirm channel so we can check the message is sent OK.
|
|
const channel = yield conn.createConfirmChannel();
|
|
|
|
yield channel.assertQueue(q);
|
|
|
|
channel.sendToQueue(q, Buffer.from(msg));
|
|
|
|
// if message has been nacked, this will result in an error (rejected promise);
|
|
yield channel.waitForConfirms();
|
|
|
|
console.log(" [x] Sent '%s'", msg);
|
|
|
|
channel.close();
|
|
}
|
|
catch (e) {
|
|
throw e;
|
|
}
|
|
finally {
|
|
conn.close();
|
|
}
|
|
|
|
}).catch(err => {
|
|
console.warn('Error:', err);
|
|
});
|