Embedded
Express
Mount Bullstudio in an Express app.
Install
pnpm add @bullstudio/express @bullstudio/bullmq-adapter bullmq ioredis expressMount the dashboard
import { createBullMqQueueAdapter } from "@bullstudio/bullmq-adapter";
import { bullstudio } from "@bullstudio/express";
import { Queue } from "bullmq";
import express from "express";
import IORedis from "ioredis";
const connection = new IORedis(process.env.REDIS_URL!, {
maxRetriesPerRequest: null,
});
const emailQueue = new Queue("email", { connection });
const app = express();
app.use(
"/ops/bullstudio",
bullstudio({
queues: [
createBullMqQueueAdapter(emailQueue, {
key: "email",
label: "Email",
}),
],
protection: {
type: "session",
username: process.env.BULLSTUDIO_USERNAME ?? "operator",
password: process.env.BULLSTUDIO_PASSWORD!,
sessionSecret: process.env.BULLSTUDIO_SESSION_SECRET!,
},
}),
);
const server = app.listen(3000);Open http://localhost:3000/ops/bullstudio.
Shutdown
Bullstudio does not close host-owned queues or Redis connections.
async function shutdown() {
await new Promise<void>((resolve, reject) => {
server.close((error) => (error ? reject(error) : resolve()));
});
await emailQueue.close();
await connection.quit();
}