@opens/rabbitmq
v1.2.1
Published
A wrapper around common message brokers
Downloads
611
Keywords
Readme
OpensMQ
This library is a lightweight wrapper around RabbitMQ that simplifies publishing and subscribing to messages using amqp-connection-manager and amqplib. This library provides an easy-to-use API for event-driven applications.
Getting Started
Initialization
To start using rabbitmqMQ, create an instance and initialize the connection to RabbitMQ. This must be done first:
import { rabbitmq } from './rabbitmq';
rabbitmq.start({
hostname: 'localhost',
port: 5672,
username: 'guest',
password: 'guest',
protocol: 'amqp',
});Publishing Messages
You can publish messages to a specific exchange with a routing key:
await rabbitmq.publish('my-exchange', 'my-routing-key', { message: 'Hello, World!' });Subscribing to Messages
To subscribe to a queue and process messages:
rabbitmq.subscribe({
name: 'my-queue',
exchange: 'my-exchange',
bindingKey: 'my-routing-key',
durable: true,
prefetch: 1,
up: async () => console.log('Consumer is up'),
down: async () => console.log('Consumer is down'),
});Handling Message Acknowledgments
The library automatically acknowledges messages if processed successfully. If an error occurs, the message is rejected (nack).
Advanced Configuration
Setting TTL (Time-To-Live)
To set a TTL for messages in the queue:
rabbitmq.subscribe({
name: 'expiring-queue',
exchange: 'my-exchange',
bindingKey: 'expiring-key',
ttl: 30000, // Messages expire after 30 seconds
consumer: async (data) => {
console.log('Processing expiring message:', data);
},
up: async () => console.log('Consumer is up'),
down: async () => console.log('Consumer is down'),
});Exclusive Queues
For a queue that only allows a single connection:
rabbitmq.subscribe({
name: 'exclusive-queue',
exchange: 'my-exchange',
bindingKey: 'exclusive-key',
exclusive: true,
consumer: async (data) => {
console.log('Processing exclusive message:', data);
},
up: async () => console.log('Consumer is up'),
down: async () => console.log('Consumer is down'),
});Error Handling
Errors in the consumer function cause messages to be rejected (nack). Ensure error handling is implemented inside your consumer to prevent message loss.
Contributing
Feel free to contribute by submitting issues or pull requests.
License
This project is licensed under the MIT License.
