You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.1 KiB
46 lines
1.1 KiB
import { createBullBoard } from "@bull-board/api";
|
|
import { BullMQAdapter } from "@bull-board/api/bullMQAdapter";
|
|
import { HonoAdapter } from "@bull-board/hono";
|
|
import { serveStatic } from "@hono/node-server/serve-static";
|
|
import { Hono } from "hono";
|
|
import { handle } from "hono/vercel";
|
|
import { getQuoteRpaQueue } from "@/workers/rpa/queue";
|
|
|
|
const BASE_PATH = "/api/admin/queues";
|
|
|
|
let honoHandler: ((request: Request) => Response | Promise<Response>) | null =
|
|
null;
|
|
|
|
function createHandler() {
|
|
const serverAdapter = new HonoAdapter(serveStatic);
|
|
|
|
createBullBoard({
|
|
queues: [
|
|
new BullMQAdapter(getQuoteRpaQueue(), {
|
|
readOnlyMode: false,
|
|
allowRetries: true,
|
|
}),
|
|
],
|
|
serverAdapter,
|
|
options: {
|
|
uiConfig: {
|
|
boardTitle: "报价 RPA 队列监控",
|
|
},
|
|
},
|
|
});
|
|
|
|
serverAdapter.setBasePath(BASE_PATH);
|
|
|
|
const app = new Hono().basePath("/api");
|
|
app.route("/admin/queues", serverAdapter.registerPlugin());
|
|
|
|
return handle(app);
|
|
}
|
|
|
|
export function getBullBoardHandler() {
|
|
if (!honoHandler) {
|
|
honoHandler = createHandler();
|
|
}
|
|
return honoHandler;
|
|
}
|