diff --git a/packages/gateway/src/routes/setupRoutes.ts b/packages/gateway/src/routes/setupRoutes.ts index fecaf8de5..b5854577a 100644 --- a/packages/gateway/src/routes/setupRoutes.ts +++ b/packages/gateway/src/routes/setupRoutes.ts @@ -16,6 +16,9 @@ import bodyparser from "koa-bodyparser"; import cors from "koa2-cors"; import serve from "koa-static"; import koaCash from "koa-cash"; +import { KoaAdapter } from "@bull-board/koa"; +import { createBullBoard } from "@bull-board/api"; +import { BullMQAdapter } from "@bull-board/api/bullMQAdapter"; export const setupHealthCheckRoute = ( routerInstance: Router, @@ -132,86 +135,82 @@ export const setupDocs = (app: Koa, config: Config.ConfigSchema): boolean => { } }; -// export const setupMicroserviceRoutes = async ( -// app: Koa, -// config: Config.ConfigSchema, -// queues: Queue[], -// ): Promise => { -// try { -// if (config?.redis?.host && config?.redis?.port) { -// await addQueues(config, queues); -// setupBullBoard(app, queues); -// } -// return true; -// } catch (e) { -// logger.error(`Error setting up microservice routes: ${e}`, { -// label: "Gateway", -// }); -// return false; -// } -// }; +export const setupMicroserviceRoutes = async ( + app: Koa, + config: Config.ConfigSchema, + queues: Queue[], +): Promise => { + try { + if (config?.redis?.host && config?.redis?.port) { + await addQueues(config, queues); + setupBullBoard(app, queues); + } + return true; + } catch (e) { + logger.error(`Error setting up microservice routes: ${e}`, { + label: "Gateway", + }); + return false; + } +}; // Add BullMQ Queues for Microservice Jobs -// export const addQueues = async ( -// config: Config.ConfigSchema, -// queues: Queue[], -// ): Promise => { -// try { -// const releaseMonitorQueue = new Queue("releaseMonitor", { -// connection: { -// host: config?.redis?.host, -// port: config?.redis?.port, -// }, -// }); -// const constraintsQueue = new Queue("constraints", { -// connection: { -// host: config?.redis?.host, -// port: config?.redis?.port, -// }, -// }); -// const chaindataQueue = new Queue("chaindata", { -// connection: { -// host: config?.redis?.host, -// port: config?.redis?.port, -// }, -// }); -// const blockQueue = new Queue("block", { -// connection: { -// host: config?.redis?.host, -// port: config?.redis?.port, -// }, -// }); -// -// queues.push( -// releaseMonitorQueue, -// constraintsQueue, -// chaindataQueue, -// blockQueue, -// ); -// return true; -// } catch (e) { -// logger.error(`Error adding queues: ${e}`, { label: "Gateway" }); -// return false; -// } -// }; +export const addQueues = async ( + config: Config.ConfigSchema, + queues: Queue[], +): Promise => { + try { + const releaseMonitorQueue = new Queue("releaseMonitor", { + connection: { + host: config?.redis?.host, + port: config?.redis?.port, + }, + }); + const constraintsQueue = new Queue("constraints", { + connection: { + host: config?.redis?.host, + port: config?.redis?.port, + }, + }); + const chaindataQueue = new Queue("chaindata", { + connection: { + host: config?.redis?.host, + port: config?.redis?.port, + }, + }); + const blockQueue = new Queue("block", { + connection: { + host: config?.redis?.host, + port: config?.redis?.port, + }, + }); -// export const setupBullBoard = (app: Koa, queues: Queue[]): boolean => { -// try { -// const serverAdapter = new KoaAdapter(); -// createBullBoard({ -// queues: queues.map((queue) => { -// return new BullMQAdapter(queue); -// }), -// serverAdapter, -// }); -// serverAdapter.setBasePath("/bull"); -// app.use(serverAdapter.registerPlugin()); -// return true; -// } catch (e) { -// logger.error(`Error setting up BullBoard: ${e}`, { label: "Gateway" }); -// return false; -// } -// }; + queues.push( + releaseMonitorQueue, + constraintsQueue, + chaindataQueue, + blockQueue, + ); + return true; + } catch (e) { + logger.error(`Error adding queues: ${e}`, { label: "Gateway" }); + return false; + } +}; + +export const setupBullBoard = (app: Koa, queues: Queue[]): void => { + try { + const serverAdapter = new KoaAdapter(); + createBullBoard({ + queues: queues.map((queue) => new BullMQAdapter(queue)), + serverAdapter: serverAdapter as never, + }); + serverAdapter.setBasePath("/bull"); + app.use(serverAdapter.registerPlugin()); + } catch (error) { + console.error(`Error setting up BullBoard: ${error}`); + } +}; export const setupCache = (app: Koa, configCache: number): boolean => { try { @@ -275,7 +274,7 @@ export const setupRoutes = async ( setupDocs(app, config); // Setup microservice routes if Redis is configured in config - // await setupMicroserviceRoutes(app, config, queues); + await setupMicroserviceRoutes(app, config, queues); // Serve all other routes app.use(router.routes());