comienzo de la visualización de tareas + cola de rabbit
This commit is contained in:
15
packages/sim-shared/aplication/Rabbit.usecases.ts
Normal file
15
packages/sim-shared/aplication/Rabbit.usecases.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { RabbitManagementClient } from "../infrastructure/RabbitManagementClient.js";
|
||||
import { Queue } from "../domain/Queue.js";
|
||||
|
||||
export class RabbitUseCases {
|
||||
private client: RabbitManagementClient
|
||||
|
||||
constructor(client: RabbitManagementClient) {
|
||||
this.client = client
|
||||
}
|
||||
|
||||
public async getQueuesStatus(): Promise<Queue[]> {
|
||||
const queues = await this.client.getQueues()
|
||||
return queues.sort((a, b) => b.messages - a.messages)
|
||||
}
|
||||
}
|
||||
20
packages/sim-shared/config/env/index.ts
vendored
Normal file
20
packages/sim-shared/config/env/index.ts
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
import { loadEnvFile } from "node:process";
|
||||
import path from "node:path";
|
||||
|
||||
|
||||
loadEnvFile(path.join("../../.env")) // Global
|
||||
|
||||
export const env = {
|
||||
ENVIRONMENT: process.env.ENVIORMENT,
|
||||
API_PORT: parseInt(process.env.API_PORT ?? "3000"),
|
||||
RABBITMQ_HOST: String(process.env.RABBITMQ_HOST ?? "localhost"),
|
||||
RABBITMQ_USER: String(process.env.RABBITMQ_USER ?? "test"),
|
||||
RABBITMQ_PASSWORD: String(process.env.RABBITMQ_PASSWORD ?? "test"),
|
||||
RABBITMQ_EXCHANGE: String(process.env.RABBITMQ_EXCHANGE ?? "/"),
|
||||
RABBITMQ_PORT: parseInt(process.env.RABBITMQ_PORT ?? "5672"),
|
||||
RABBITMQ_MODULENAME: process.env.MODULENAME,
|
||||
RABBITMQ_TTL: process.env.RABBITMQ_TTL,
|
||||
RABBITMQ_SECURE: process.env.RABBITMQ_SECURE,
|
||||
RABBITMQ_RETRY_INTERVAL: process.env.RABBITMQ_INTERVAL,
|
||||
RABBITMQ_VHOST: String(process.env.RABBITMQ_VHOST),
|
||||
};
|
||||
26
packages/sim-shared/config/eventBusConfig.ts
Normal file
26
packages/sim-shared/config/eventBusConfig.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { RabbitMQEventBus, RMQConnectionParams } from "sim-shared/infrastructure/RabbitMQEventBus.js"
|
||||
import { env } from "./env/index.js"
|
||||
|
||||
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 startRMQClient() {
|
||||
await rabbitmqEventBus.connect()
|
||||
}
|
||||
7
packages/sim-shared/domain/Queue.ts
Normal file
7
packages/sim-shared/domain/Queue.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
export interface Queue {
|
||||
name: string;
|
||||
messages: number;
|
||||
ready: number;
|
||||
unacked: number;
|
||||
consumers: number;
|
||||
}
|
||||
37
packages/sim-shared/infrastructure/RabbitManagementClient.ts
Normal file
37
packages/sim-shared/infrastructure/RabbitManagementClient.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
import axios, { AxiosInstance } from "axios";
|
||||
import { Queue } from "sim-shared/domain/Queue.js";
|
||||
|
||||
export class RabbitManagementClient {
|
||||
private client: AxiosInstance;
|
||||
|
||||
constructor(args: {
|
||||
baseURL: string;
|
||||
user: string;
|
||||
password: string;
|
||||
}) {
|
||||
this.client = axios.create({
|
||||
baseURL: args.baseURL,
|
||||
auth: {
|
||||
username: args.user,
|
||||
password: args.password,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
public async getQueues(): Promise<Queue[]> {
|
||||
try {
|
||||
const response = await this.client.get("/queues")
|
||||
return response.data.map((q: any) => ({
|
||||
name: q.name,
|
||||
messages: q.messages,
|
||||
ready: q.messages_ready,
|
||||
unacked: q.messages_unacknowledged,
|
||||
consumers: q.consumers
|
||||
}))
|
||||
} catch (err) {
|
||||
console.error("[RabbitManagementClient] Error obteniendo colas", err);
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user