@aios-medical/bullmq-dashboard-expressed (中文(简体) )
Express.js AIOS BullMQ Dashboard的服务器适配器.
安装
npm install @aios-medical/bullmq-dashboard-express
# or
yarn add @aios-medical/bullmq-dashboard-express
# or
pnpm add @aios-medical/bullmq-dashboard-express
概览
这个软件包为服务于AIOS BullMQ Dashboard提供了一个Express.js适配器. 它处理路由,中间软件集成,并为静态UI资产服务.
使用量
基本设置
import express from 'express';
import { createDashboard } from '@aios-medical/bullmq-dashboard-api';
import { BullMQAdapter } from '@aios-medical/bullmq-dashboard-api/bullMQAdapter';
import { ExpressAdapter } from '@aios-medical/bullmq-dashboard-express';
import { Queue } from 'bullmq';
const app = express();
// Create your BullMQ queue
const queue = new Queue('my-queue', {
connection: { host: 'localhost', port: 6379 }
});
// Create the Express adapter
const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');
// Create the dashboard
createDashboard({
queues: [new BullMQAdapter(queue)],
serverAdapter,
options: {
uiConfig: {
title: 'My Queue Dashboard',
subtitle: 'Production',
},
},
});
// Mount the dashboard
app.use('/admin/queues', serverAdapter.getRouter());
app.listen(3000, () => {
console.log('Dashboard running on http://localhost:3000/admin/queues');
});
与公牛(列格西语)
import express from 'express';
import { createDashboard } from '@aios-medical/bullmq-dashboard-api';
import { BullAdapter } from '@aios-medical/bullmq-dashboard-api/bullAdapter';
import { ExpressAdapter } from '@aios-medical/bullmq-dashboard-express';
import Queue from 'bull';
const app = express();
const queue = new Queue('my-queue', {
redis: { host: 'localhost', port: 6379 }
});
const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');
createDashboard({
queues: [new BullAdapter(queue)],
serverAdapter,
options: {
uiConfig: {
title: 'My Queue Dashboard',
},
},
});
app.use('/admin/queues', serverAdapter.getRouter());
app.listen(3000);
多个队列
const emailQueue = new Queue('emails', { connection: { host: 'localhost', port: 6379 } });
const reportQueue = new Queue('reports', { connection: { host: 'localhost', port: 6379 } });
const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');
createDashboard({
queues: [
new BullMQAdapter(emailQueue, { displayName: 'Email Queue' }),
new BullMQAdapter(reportQueue, { displayName: 'Report Queue' }),
],
serverAdapter,
options: {
uiConfig: {
title: 'Production Queues',
},
},
});
app.use('/admin/queues', serverAdapter.getRouter());
有认证
import basicAuth from 'express-basic-auth';
const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');
createDashboard({
queues: [new BullMQAdapter(queue)],
serverAdapter,
options: {
uiConfig: {
title: 'Protected Dashboard',
},
},
});
// Add authentication middleware
app.use('/admin/queues', basicAuth({
challenge: true,
users: { admin: process.env.DASHBOARD_PASSWORD || 'secret' },
}));
app.use('/admin/queues', serverAdapter.getRouter());
自定义中端软件
在安装仪表板之前, 您可以添加任何 Express 中间软件 :
const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');
// Rate limiting
import rateLimit from 'express-rate-limit';
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100 // limit each IP to 100 requests per windowMs
});
app.use('/admin/queues', limiter);
// CORS
import cors from 'cors';
app.use('/admin/queues', cors());
// Mount dashboard
app.use('/admin/queues', serverAdapter.getRouter());
API 参考
运算符
特快适配器配置主班.
构造器
constructor()
创建新的 ExpressAdapter 实例, 并附带一个内部 Express app .
方法
设置BasePath(路径:字符串)
设置仪表盘路线的基础路径.
serverAdapter.setBasePath('/admin/queues');
设置StaticPath( StaticRoute: 字符串, 静态Path: 字符串)
为 UI 资产配置静态文件 .
serverAdapter.setStaticPath('/static', '/path/to/dist/static');
设置 PUPHPath( 视图Path: 字符串)
设置 EJS 模板的视图路径.
serverAdapter.setViewsPath('/path/to/dist');
设置 ErrorHandler( 处理器 : (错误: 错误) 控制器 Handler ReturnValue
设置 API 路由的错误处理器.
serverAdapter.setErrorHandler((error) => {
return {
status: 500,
body: { error: error.message }
};
});
设置队列( 队列登记: 队列登记)
设置队列注册( 称为 : createDashboard) (中文(简体) ).
serverAdapter.setQueues(queueRegistry);
设置 UIConfig( 配置: UIConfig)
设置用户界面配置(称为自动配置) createDashboard) (中文(简体) ).
serverAdapter.setUIConfig({
title: 'My Dashboard',
subtitle: 'Production',
});
获取鲁特( )
返回要挂入您的应用程序的快递路由器 .
app.use('/admin/queues', serverAdapter.getRouter());
配置
适配器通过 createDashboard 函数来自 API 软件包。 所有 UI 配置都通过 options.uiConfig 参数 :
createDashboard({
queues: [new BullMQAdapter(queue)],
serverAdapter,
options: {
uiConfig: {
title: 'My Dashboard',
subtitle: 'Production',
environment: {
label: 'Production',
color: '#ef4444',
},
pollingInterval: {
forceInterval: 5000,
},
miscLinks: [
{ text: 'Docs', url: 'https://docs.example.com' },
],
hideRedisDetails: false,
},
},
});
高级使用
嵌入式路线
您可以在现有路线下嵌入仪表板:
const apiRouter = express.Router();
const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/dashboard');
createDashboard({
queues: [new BullMQAdapter(queue)],
serverAdapter,
});
apiRouter.use('/dashboard', serverAdapter.getRouter());
app.use('/api/v1', apiRouter);
// Dashboard available at /api/v1/dashboard
自定义错误处理
serverAdapter.setErrorHandler((error) => {
console.error('Dashboard error:', error);
return {
status: 500,
body: {
error: 'Internal server error',
message: process.env.NODE_ENV === 'development' ? error.message : undefined,
},
};
});
多个实例
您可以运行多个不同配置的仪表板实例 :
const prodAdapter = new ExpressAdapter();
prodAdapter.setBasePath('/admin/prod-queues');
createDashboard({
queues: [new BullMQAdapter(prodQueue)],
serverAdapter: prodAdapter,
options: {
uiConfig: { title: 'Production Queues' },
},
});
const devAdapter = new ExpressAdapter();
devAdapter.setBasePath('/admin/dev-queues');
createDashboard({
queues: [new BullMQAdapter(devQueue)],
serverAdapter: devAdapter,
options: {
uiConfig: { title: 'Development Queues' },
},
});
app.use('/admin/prod-queues', prodAdapter.getRouter());
app.use('/admin/dev-queues', devAdapter.getRouter());
依赖关系
- 表达式: ^ 4.2.1.2 (中文(简体) )
- 简况: ^ 3.1.10 (韩语)
- @aios-medical/bullmq-dashboard-api (英语): ^ 1.0.0 (中文(简体) )
- @aios-medical/bullmq-dashboard-ui (英语): ^ 1.0.0 (中文(简体) )
许可证
麻省理工学院
相关软件包
- @aios-medical/bullmq-dashboard-api (英语) - 核心API软件包
- @aios-medical/bullmq-dashboard-ui (英语) - 反应UI组件
- @aios-medical/bullmq-dashboard-nesstjs (英语) - 雀巢JS模块