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;