@aios-medical/bullmq-dashboard-api (英语)
用于AIOS BullMQ Dashboard的框架不可知API.
安装
npm install @aios-medical/bullmq-dashboard-api
# or
yarn add @aios-medical/bullmq-dashboard-api
# or
pnpm add @aios-medical/bullmq-dashboard-api
概览
这个软件包提供了监测和管理公牛和公牛MQ队列的核心API. 它包括:
- Base 绘图器: 用于创建自定义队列适配器的抽象基础类
- BullAdapter 软件: 公牛 v4 队列的适配器
- BullMQ阿达普特: BullMQ v5 队列的适配器
- 创建 Dash 板: 以队列设置仪表板的功能
使用量
使用 BullMQ 的基本设置
import { createDashboard } from '@aios-medical/bullmq-dashboard-api';
import { BullMQAdapter } from '@aios-medical/bullmq-dashboard-api/bullMQAdapter';
import { Queue } from 'bullmq';
import { ExpressAdapter } from '@aios-medical/bullmq-dashboard-express';
const queue = new Queue('my-queue', { connection: { host: 'localhost', port: 6379 } });
const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');
createDashboard({
queues: [new BullMQAdapter(queue)],
serverAdapter,
options: {
uiConfig: {
title: 'My Queue Dashboard',
subtitle: 'Production',
},
},
});
app.use('/admin/queues', serverAdapter.getRouter());
与公牛的基本设置( Legacy)
import { createDashboard } from '@aios-medical/bullmq-dashboard-api';
import { BullAdapter } from '@aios-medical/bullmq-dashboard-api/bullAdapter';
import Queue from 'bull';
import { ExpressAdapter } from '@aios-medical/bullmq-dashboard-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());
队列适配器选项
两者 BullAdapter 财务报告和审定财务报表 BullMQAdapter 接受选项对象 :
const adapter = new BullMQAdapter(queue, {
readOnlyMode: false, // Disable job modifications
allowRetries: true, // Allow retrying failed jobs
description: 'Email queue', // Queue description
displayName: 'Emails', // Display name in UI
prefix: 'prod:', // Queue name prefix
delimiter: '-', // Delimiter for queue names
externalJobUrl: (job) => `https://myapp.com/jobs/${job.id}`, // Custom job URL
});
桌面选项
配置仪表板行为和外观 :
createDashboard({
queues: [new BullMQAdapter(queue)],
serverAdapter,
options: {
uiBasePath: '/custom/path', // Custom path to UI assets
uiConfig: {
title: 'My Dashboard',
subtitle: 'Production',
favIcon: {
default: 'custom-icon.svg',
alternative: 'custom-favicon.png',
},
environment: {
label: 'Production',
color: '#ef4444',
textColor: '#ffffff',
},
pollingInterval: {
forceInterval: 5000, // Force 5-second polling (overrides user settings)
},
miscLinks: [
{ text: 'Documentation', url: 'https://docs.example.com' },
{ text: 'Support', url: 'https://support.example.com' },
],
hideRedisDetails: false, // Hide Redis connection details
},
},
});
动态队列管理
这个 createDashboard 函数返回动态管理队列的方法 :
const { setQueues, replaceQueues, addQueue, removeQueue } = createDashboard({
queues: [new BullMQAdapter(queue1)],
serverAdapter,
});
// Replace all queues
replaceQueues([new BullMQAdapter(queue2), new BullMQAdapter(queue3)]);
// Add a queue dynamically
addQueue(new BullMQAdapter(queue4));
// Remove a queue dynamically
removeQueue('queue-name');
// Set queues (alias for replaceQueues)
setQueues([new BullMQAdapter(queue5)]);
自定义格式
为工作数据添加自定义格式化器 :
const adapter = new BullMQAdapter(queue);
// Format job names
adapter.setFormatter('name', (data) => {
return `Custom: ${data.name}`;
});
// Format job data
adapter.setFormatter('data', (data) => {
return { ...data, timestamp: new Date().toISOString() };
});
可见卫士
根据请求上下文控制队列可见度 :
const adapter = new BullMQAdapter(queue);
adapter.setVisibilityGuard((request) => {
// Only show queue to authenticated admins
return request.user?.role === 'admin';
});
API 参考
创建 Dash 板
创建和配置仪表板实例.
function createDashboard(config: {
queues: ReadonlyArray<BaseAdapter>;
serverAdapter: IServerAdapter;
options?: DashboardOptions;
}): {
setQueues: (queues: ReadonlyArray<BaseAdapter>) => void;
replaceQueues: (queues: ReadonlyArray<BaseAdapter>) => void;
addQueue: (queue: BaseAdapter) => void;
removeQueue: (queueName: string) => void;
}
Base 绘图器
队列适配器的抽象基础类. 扩展此选项以创建自定义适配器 .
方法
clean(queueStatus: JobCleanStatus, graceTimeMs: number): Promise<void>addJob(name: string, data: any, options: QueueJobOptions): Promise<QueueJob>getJob(id: string): Promise<QueueJob | undefined | null>getJobCounts(): Promise<JobCounts>getJobs(jobStatuses: JobStatus[], start?: number, end?: number): Promise<QueueJob[]>getJobLogs(id: string): Promise<string[]>getName(): stringgetRedisInfo(): Promise<string>isPaused(): Promise<boolean>pause(): Promise<void>resume(): Promise<void>empty(): Promise<void>obliterate(): Promise<void>promoteAll(): Promise<void>getStatuses(): Status[]getJobStatuses(): JobStatus[]getGlobalConcurrency(): Promise<number | null>setGlobalConcurrency(concurrency: number): Promise<void>setFormatter(field: FormatterField, formatter: (data: any) => any): voidsetVisibilityGuard(guard: (request: DashboardRequest) => Promise<boolean> | boolean): void
BullAdapter 软件
公牛 v4 队列的适配器.
constructor(queue: Queue, options?: Partial<QueueAdapterOptions>)
BullMQ阿达普特
BullMQ v5 队列的适配器.
constructor(queue: Queue, options?: Partial<QueueAdapterOptions>)
状态常数
用于类型安全工作状态处理的导入状态常数 :
import { STATUSES } from '@aios-medical/bullmq-dashboard-api/constants/statuses';
// STATUSES includes: 'latest', 'active', 'waiting', 'delayed', 'failed', 'completed', etc.
同伴依赖关系
此软件包需要 @aios-medical/bullmq-dashboard-ui 用于仪表板UI.
许可证
麻省理工学院
相关软件包
- @aios-medical/bullmq-dashboard-ui (英语) - 反应UI组件
- @aios-medical/bullmq-dashboard-expressed (中文(简体) ) - Express.js适配器
- @aios-medical/bullmq-dashboard-nesstjs (英语) - 雀巢JS模块