This is a very opinionated abstraction over amqplib to help simplify the implementation of several messaging patterns on RabbitMQ.
!Important! - successful use of this library will require a conceptual knowledge of AMQP and an understanding of RabbitMQ.
This contrived example is here to make it easy to see what the API looks like now that documentation is broken up across multiple pages.
const rabbit = require('foo-foo-mq');
rabbit.handle('MyMessage', (msg) => {
console.log('received msg', msg.body);
msg.ack();
});
rabbit.handle('MyRequest', (req) => {
req.reply('yes?');
});
rabbit.configure({
connection: {
name: 'default',
user: 'guest',
pass: 'guest',
host: 'my-rabbitmq-server',
port: 5672,
vhost: '%2f',
replyQueue: 'customReplyQueue'
},
exchanges: [
{ name: 'ex.1', type: 'fanout', autoDelete: true }
],
queues: [
{ name: 'q.1', autoDelete: true, subscribe: true },
],
bindings: [
{ exchange: 'ex.1', target: 'q.1', keys: [] }
]
}).then(
() => console.log('connected!');
);
rabbit.request('ex.1', { type: 'MyRequest' })
.then(
reply => {
console.log('got response:', reply.body);
reply.ack();
}
);
rabbit.publish('ex.1', { type: 'MyMessage', body: 'hello!' });
setTimeout(() => {
rabbit.shutdown(true)
},5000);