@aios-medical/bullmq-dashboard-api

中文文档
1.0.2发布于 2026/06/06MITTypeScriptCommonJS近 30 天下载 1970

Aios Bullmq仪表板的框架不可知性API.

中文使用文档
文档目录19 节
  1. 安装
  2. 概览
  3. 使用量
  4. 使用 BullMQ 的基本设置
  5. 与公牛的基本设置( Legacy)
  6. 队列适配器选项
  7. 桌面选项
  8. 动态队列管理
  9. 自定义格式
  10. 可见卫士
  11. API 参考
  12. 创建 Dash 板
  13. Base 绘图器
  14. BullAdapter 软件
  15. BullMQ阿达普特
  16. 状态常数
  17. 同伴依赖关系
  18. 许可证
  19. 相关软件包

@aios-medical/bullmq-dashboard-api (英语)

用于AIOS BullMQ Dashboard的框架不可知API.

AIOS BullMQ Dashboard overview

安装

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(): string
  • getRedisInfo(): 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): void
  • setVisibilityGuard(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-api 共发布 3 个版本,首次发布于 2026/05/28;过去 12 个月发布了 3 个版本。

版本发布日期距今
1.0.2latest2026/06/065 个月前
1.0.12026/06/065 个月前
1.0.02026/05/285 个月前

关于 @aios-medical/bullmq-dashboard-api 的常见问题

@aios-medical/bullmq-dashboard-api 是什么?

Aios Bullmq仪表板的框架不可知性API.

如何安装 @aios-medical/bullmq-dashboard-api?

在项目目录运行 npm install @aios-medical/bullmq-dashboard-api,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@aios-medical/bullmq-dashboard-ui(^1.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aios-medical/bullmq-dashboard-api 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aios-medical/bullmq-dashboard-api 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aios-medical/bullmq-dashboard-api 可以商用吗?

@aios-medical/bullmq-dashboard-api 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aios-medical/bullmq-dashboard-api 的下载量有多少?

根据 npm 官方下载统计,@aios-medical/bullmq-dashboard-api 在 2026/10/05 – 2026/11/03 这 30 天内被下载 1,970 次,日均约 66 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aios-medical/bullmq-dashboard-api 还在维护吗?

最新版本 1.0.2 发布于 2026/06/06(5 个月前);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/05/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。