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**.
npm install message-broker-utilsh
npm install message-broker-util
`
Importing
`typescript
import MessageBroker, { MessageBrokerConfig } from "message-broker-util";
`
Configuration
The MessageBroker class requires a configuration object of type MessageBrokerConfig:
`typescript
interface MessageBrokerConfig {
url: string; // RabbitMQ connection URL
exchangeName: string; // Exchange name
queueName: string; // Queue name
}
`
Example configuration:
`typescript
const config: MessageBrokerConfig = {
url: "amqp://localhost",
exchangeName: "my_exchange",
queueName: "my_queue",
};
`
Usage
$3
`typescript
const broker = new MessageBroker(config);
await broker.initialize();
`
$3
`typescript
await broker.publishMessage("routing_key", { message: "Hello, RabbitMQ!" });
`
$3
`typescript
await broker.subscribeMessage("routing_key", (msg) => {
if (msg) {
console.log("Received:", msg.content.toString());
}
});
`
$3
#### a. Sending an RPC Request
`typescript
const response = await broker.requestData("rpc_queue", {
data: "Request Data",
});
console.log("Response:", response);
`
#### b. Observing RPC Requests
`typescript
await broker.observeRequest("rpc_queue", async (requestPayload) => {
return { response: "Processed " + requestPayload.data };
});
`
$3
`typescript
await broker.close();
``