Express + cliente RMQ asociado a casoso de uso

This commit is contained in:
2026-01-13 17:24:22 +01:00
parent d2db2062b0
commit f8164ac38c
4 changed files with 69 additions and 45 deletions

View File

@@ -3,6 +3,7 @@ loadEnvFile("../../.env")
export const env = {
ENVIRONMENT: process.env.ENVIORMENT,
API_PORT: parseInt(process.env.API_PORT ?? "3000"),
POSTGRES_USER: process.env.POSTGRES_USER,
POSTGRES_PASSWORD: process.env.POSTGRES_PASSWORD,
POSTGRES_PORT: process.env.POSTGRES_PORT,

View File

@@ -0,0 +1,26 @@
import { RabbitMQEventBus, RMQConnectionParams } from "#shared/infrastructure/RabbitMQEventBus"
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 = <RMQConnectionParams>{
username: rmqUser,
password: rmqPass,
vhost: rmqVhost,
hostname: rmqHost,
port: rmqPort,
secure: rmqSecure,
}
export const rabbitmqEventBus = new RabbitMQEventBus({
connectionParams: rmqConnOptions
})
export async function startRMQServer() {
await rabbitmqEventBus.connect()
}

View File

@@ -1,50 +1,35 @@
import express from "express"
import cors from 'cors';
import { simRoutes } from "infrastructure/simRoutes.http"
import { rabbitmqEventBus } from '#config/eventBusConfig';
import { env } from "#config/env"
import { SimEvents } from "#shared/domain/SimEvents"
import { RabbitMQEventBus, RMQConnectionParams } from "#shared/infrastructure/RabbitMQEventBus"
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
const PORT = env.API_PORT
const HOSTNAME = "0.0.0.0"
const app = express()
async function test() {
const connOptions = <RMQConnectionParams>{
username: rmqUser,
password: rmqPass,
vhost: rmqVhost,
hostname: rmqHost,
port: rmqPort,
secure: rmqSecure,
}
const event = <SimEvents.activation>{
key: "sim.activation",
payload: {
iccid: "1234"
},
options: {
}
}
const rmqCli = new RabbitMQEventBus({
connectionParams: connOptions
rabbitmqEventBus.connect()
.then(e => {
console.log("[o] Cliente RMQ iniciado")
})
.catch(e => {
console.error("[!] El cliente RMQ no se ha podido iniciar", e)
})
await rmqCli.connect()
console.log("publicando", event)
rmqCli.publish([event])
.then(e => {
console.log("Mensaje publicado", e)
})
.catch(err => console.error)
}
// Middleware
app.use(cors());
test()
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use("/sim", simRoutes)
app.get("/health", (req, res) => {
res.status(200).json({ status: "ok" })
})
app.listen(PORT, HOSTNAME, () => {
console.log("[o] Servidor iniciado en el puerto %d", PORT)
})
export default {}

View File

@@ -1,15 +1,26 @@
import { rabbitmqEventBus } from '#config/eventBusConfig';
import { SimUsecases } from 'aplication/Sim.usecases';
import { SimController } from 'aplication/SimController';
import { Router } from 'express';
const simRoutes = Router()
simRoutes.get("/status")
const simUseCases = new SimUsecases({
eventBus: rabbitmqEventBus
})
const simController = new SimController({
simUseCases: simUseCases
})
simRoutes.get("/status", () => { })
simRoutes.post("/save", (req, res) => {
})
simRoutes.post("/activate", (req, res) => {
const { iccid } = req.body
})
simRoutes.post("/activate", simController.activation)
simRoutes.post("/pause", (req, res) => {
})
@@ -20,3 +31,4 @@ simRoutes.post("/cancel", (req, res) => {
simRoutes.post("/free", (req, res) => {
})
export { simRoutes }