A minimalist, customizeable AMQP framework
$ npm install hato amqplib
hato aims to simplify messaging without diminishing the flexibility and power in doing so.
This library is highly customizeable. Plugins allow for a configuration that fits your project and for extension of the library to meet unique requirements.
The library is built upon amqplib and is compatible with AMQP 0-9-1 and is promise based (the implementation of which can be overriden).
Include the library and plugins
const { Client, plugins } = require('hato');
Construct a new client
const client = new Client(BROKER_URL, {
plugins: [
'gracefulShutdown', // register plugin with default options
'connectionRetry',
'duplex',
new plugins.Encoding('json') // instantiate for a detailed configuration
],
/**
* Optionally specify a module for logging
*/
logger: myLogger
});
Create a queue and subscribe to an event
client
.type('topic')
.queue('my.queue', { exclusive: true })
.subscribe('an.event', (msg) => {
console.log(msg);
// Acknowladge the message
msg.ack();
});
Start the client
client
.start()
.catch(console.error);
After the client started, you can publish a message to the queue
client
.type('topic')
.publish('an.event', Buffer.from('An event'))
.catch(console.error);
Make sure you have a message broker running. The tests expect RabbitMQ.
$ docker run -it --name rabbitmq -p 5672:5672 rabbitmq:3.6-alpine
Then run
$ make test
$ make tdd
$ make lint