amqpimping
v0.1.0
Published
Pimp my AMQP
Downloads
3
Readme
AMQPimping
AMQPimping is a simple wrapper around the amqplib
module. You can use it,
for example, to listen and publish messages to RabbitMQ.
Features
- Event-emitting class
- Reuse AMQP connection and channel
- Reconnect to queue / channel on disconnections and errors
- Retry mechanism with on
bluebird-retry
bunyan
integration
Example usage
class Queue extends AMQP {
constructor({ logger }) {
super({
host: 'localhost',
username: 'someUsername',
password: 'somePassword',
logger: bunyan.createLogger({ name: 'queue' }),
retry: {
maxTries: 10,
interval: 1000,
backoff: 2
}
});
}
}
const queue = new Queue({ logger });
// Make sure you listen to any event before doing queue.start()!
queue.on('connect', () => {
// Once connected, we can start listening to queues
queue.listen('some_queue');
});
queue.on('listen', () => {
console.log('Goodnight Seattle, I\'m listening');
queue.publish('a_different_queue', 'How can I help you?');
queue.stop();
});
// Start the queue
queue.start();
API
- AMQP
- Events
new AMQP(options)
Constructor of the AMQP listener.
| Param | Type | Description |
| --- | --- | --- |
| options | object | Options object. |
| options.host | string | The AMQP host to connect to. |
| options.username | string | The AMQP username. |
| options.password | string | The AMQP password. |
| options.logger | function | A bunyan
logger instance. |
| options.retry | object | Retry settings. |
| options.retry.maxTries | number | Amount of retries. |
| options.retry.interval | number | Interval between retries. |
| options.retry.backoff | number | Backoff factor. |
| options.durable | boolean | Whether to use durable queues or not. |
amqp.start()
Start the fun.
Kind: instance method of AMQP
amqp.connect()
Connect to AMQP.
Kind: instance method of AMQP
amqp.getChannel() ⇒ Promise
Gets the channel for this instance, or create a new one if it doesn't exist yet.
Kind: instance method of AMQP Returns: Promise - A promise to a AMQP channel.
amqp.createChannel() ⇒ Promise
Creates a new channel and handles all possible disconnections.
Kind: instance method of AMQP Returns: Promise - A promise to a AMQP channel.
amqp.listen(queue)
Listen to a queue.
Kind: instance method of AMQP
| Param | Type | Description | | --- | --- | --- | | queue | string | Name of the queue to listen to. |
amqp.publish(queue, message)
Publish a message.
Kind: instance method of AMQP
| Param | Type | Description | | --- | --- | --- | | queue | string | Queue to publish the message to. | | message | string | The message to publish. |
amqp.stop()
Stop the AMQP listener. Connection with AMQP, if present, will be closed.
Kind: instance method of AMQP
"connect"
Event fired when the connection to AMQP is successful.
Kind: event emitted by AMQP
"message"
Event fired when a message is received in the queue.
Kind: event emitted by AMQP
"listen"
Event fired when the instance starts listening to messages in the queue.
Kind: event emitted by AMQP
"error"
Event fired when an error occurs.
Kind: event emitted by AMQP
"close"
Event fired when the connection to AMQP is closed.
Kind: event emitted by AMQP
Testing
Run the integration tests with npm test
. You'll need docker compose to be installed.
License
See LICENSE.