message-broker-util
v1.0.12
Published
The **MessageBroker** package provides an abstraction layer over RabbitMQ, enabling easy message publishing, consuming, and RPC request-response communication. This package simplifies interaction with RabbitMQ using TypeScript and **amqplib**.
Readme
MessageBroker NPM Package Documentation
Overview
The MessageBroker package provides an abstraction layer over RabbitMQ, enabling easy message publishing, consuming, and RPC request-response communication. This package simplifies interaction with RabbitMQ using TypeScript and amqplib.
Installation
To install the package, run:
npm install message-broker-utilImporting
import MessageBroker, { MessageBrokerConfig } from "message-broker-util";Configuration
The MessageBroker class requires a configuration object of type MessageBrokerConfig:
interface MessageBrokerConfig {
url: string; // RabbitMQ connection URL
exchangeName: string; // Exchange name
queueName: string; // Queue name
}Example configuration:
const config: MessageBrokerConfig = {
url: "amqp://localhost",
exchangeName: "my_exchange",
queueName: "my_queue",
};Usage
1. Initializing the Message Broker
const broker = new MessageBroker(config);
await broker.initialize();2. Publishing Messages
await broker.publishMessage("routing_key", { message: "Hello, RabbitMQ!" });3. Subscribing to Messages
await broker.subscribeMessage("routing_key", (msg) => {
if (msg) {
console.log("Received:", msg.content.toString());
}
});4. Request-Response (RPC) Pattern
a. Sending an RPC Request
const response = await broker.requestData("rpc_queue", {
data: "Request Data",
});
console.log("Response:", response);b. Observing RPC Requests
await broker.observeRequest("rpc_queue", async (requestPayload) => {
return { response: "Processed " + requestPayload.data };
});5. Closing the Connection
await broker.close();Error Handling
The package includes robust error handling. If a connection or operation fails, an error message is logged to the console, and an exception is thrown.
License
MIT License
Author
Rajesh Singha Mahapatra
Contributions
Contributions are welcome! Feel free to submit a PR or open an issue.
This documentation provides a structured guide on how to use your package efficiently. Let me know if you need any refinements!
