customer-dashboard-api/src/rabbitmq/rabbitmq.ts

58 lines
1.0 KiB
TypeScript

import amqplib from "amqplib";
let channel: amqplib.Channel;
async function connect(
RABBITMQ_USERNAME: string,
RABBITMQ_PASSWORD: string,
RABBITMQ_HOST: string,
RABBITMQ_PORT: string
) {
const open = await amqplib.connect(
`amqp://${RABBITMQ_USERNAME}:${RABBITMQ_PASSWORD}@${RABBITMQ_HOST}:${RABBITMQ_PORT}`
);
if (!open) {
console.log("⚡️[RabbitMQ]: connection failed");
return;
}
channel = await open.createChannel();
if (!channel) {
console.log("⚡️[RabbitMQ]: channel failed");
return;
}
}
async function sendEmail(
email: string,
templateId: string,
languageId: string,
bodyData: any
) {
if (!channel) {
console.log("⚡️[RabbitMQ]: channel not available");
return;
}
channel.sendToQueue(
process.env.RABBITMQ_MAIL_QUEUE as string,
Buffer.from(
JSON.stringify({
m: email,
t: templateId,
l: languageId,
b: bodyData,
})
)
);
}
const rabbitmq = {
connect,
sendEmail,
};
export default rabbitmq;