import { RabbitMQEventBus, RMQConnectionParams } from "#shared/infrastructure/RabbitMQEventBus" import { Channel } from "amqp-connection-manager" import { env } from "./env" const rmqUser = env.RABBITMQ_USER const rmqPass = env.RABBITMQ_PASSWORD const rmqHost = env.RABBITMQ_HOST const rmqPort = Number(env.RABBITMQ_PORT) const rmqSecure = false const rmqVhost = env.RABBITMQ_VHOST export const rmqConnOptions = { username: rmqUser, password: rmqPass, vhost: rmqVhost, hostname: rmqHost, port: rmqPort, secure: rmqSecure, } export const rabbitmqEventBus = new RabbitMQEventBus({ connectionParams: rmqConnOptions, buildStructure: buildQueues }) function buildQueues(channel: Channel) { channel?.assertQueue("sim.objenious") .then(e => { console.log("[o] Creada la cola " + e.queue) channel?.bindQueue("sim.objenious", "sim.exchange", "sim.objenious.*") .then(e => { console.log("[o] Bindeada la cola sim.objenious a sim.exchange ") }) .catch(e => { console.error(e) }) }) .catch(e => { console.error(e) }) channel?.assertQueue("sim.objenious.dlx") .then(e => { console.log("[o] Creada la cola " + e.queue) channel?.bindQueue("sim.objenious.dlx", "sim.dlx", "sim.objenious.*") .then(e => { console.log("[o] Bindeada la cola sim.objenious.dlx a sim.dlx") }) .catch(e => { console.error(e) }) }) .catch(e => { console.error(e) }) } export async function startRMQClient() { await rabbitmqEventBus.connect() return rabbitmqEventBus }