Amqplib-plus
Amqplib-plus amplifies the original npm amqplib library with OOP approach.
Amqplib-plus adds following features:
- connection auto-reconnect
- easy to use object oriented publisher
- easy to use object oriented consumer that runs user defined callback for every consumed message
How to install:
$ npm install amqplib-plus
How to use
Basic example - publish and consume
import {Connection, Consumer, Publisher} from "amqplib-plus";
import {Channel, Message} from "amqplib";
import {CustomConsumer} from "./CustomConsumer";
const queue = { name: "some_queue_name", options: {} };
const msgContent = "some content";
const consumerPrepare: any = (ch: Channel) => {
return ch.assertQueue(queue.name, queue.options);
};
const handleMsg = (msg: Message, ch: Channel) => {
console.log(msg.content.toString());
ch.ack(msg);
};
const amqpConn = new Connection(
{ connectionString: 'amqp://guest:guest@localhost:5672/' },
console
);
const consumer = new CustomConsumer(conn, consumerPrepare, handleMsg);
consumer.consume(queue.name, {});
const publisherPrepare: any = (ch: Channel) => {
return ch.assertQueue(queue.name, queue.options);
};
const publisher = new Publisher(conn, publisherPrepare);
publisher.sendToQueue(queue.name, Buffer.from(msgContent), {});
More examples and tutorials
Connection
Publisher
Consumer
How to contribute:
Create pull request to https://github.com/hanaboso/amqplib-plus
repository.
Please note that this lib is written in typescript. Your contribution is very welcome.
How to run the tests
If you have running rabbitmq instance, set env variable values defined used in test/config.ts (default rabbitmq dsn is 'amqp://guest:guest@localhost:5672/') and run: npm run test
.
Or you can use custom rabbitmq instance in test by running RABBIT_DSN=amqp://guest:guest@yourserver:5672/ npm run test
Alternatively you can run: make test
which will start rabbitmq instance for you and run tests in docker-compose.