Skip to content

Instantly share code, notes, and snippets.

@squaremo
Created July 25, 2018 20:56
Show Gist options
  • Save squaremo/76246899d5b68302eaeaf76ac917d33c to your computer and use it in GitHub Desktop.
Save squaremo/76246899d5b68302eaeaf76ac917d33c to your computer and use it in GitHub Desktop.
var amqp = require('../channel_api')
var Promise = require('bluebird')
process.on('error', err => {
console.log('#338: process error', err)
})
process.on('uncaughtException', function (err) {
console.log('#338: process uncaught exception', err)
})
process.on('unhandledRejection', (reason, p) => {
console.log('#338: process unhandled rejection', p, 'reason', reason)
})
function reconnect(name) {
amqp.connect('amqp://localhost').then(conn => {
console.log(name+': Connected')
conn.on('error', (err) => {
console.log(name+': TODO Handle connection error', err)
setTimeout(reconnect.bind(reconnect, name), 60 * 1000);
});
return conn.createChannel().then(ch => {
return new Promise(resolve => {
ch.assertQueue('test_q')
.then(qok => qok.queue)
.then(queue => {
console.log(name+': Consuming')
return ch.consume(queue, (msg) => {
console.log(name+': Received msg')
if (msg == null) return
if (msg.content.toString() == 'crash now') throw new Error('Crashing Now!')
if (msg.content.toString() == 'crash later') {
setImmediate(() => {
throw new Error('Crashing Later!')
})
}
}, { noAck: true }).then(function(_consumeOk) {
console.log(name+' [*] Waiting for messages. To exit press CTRL+C');
})
})
})
}).finally(() => {
console.log(name+': Closing connection')
conn.close()
})
}).catch(err => {
console.log(name+': Caught Error from connect', err)
});
}
reconnect('app1');
reconnect('app2');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment