# @aios-medical/bullmq-dashboard-api 中文文档

规范地址：https://npmcn.com/package/%40aios-medical/bullmq-dashboard-api/

版本：1\.0\.2
npm 元数据更新时间：2026-06-05T17:37:47.677Z
中文译文更新时间：2026-11-07T08:45:25.477Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aios-medical/bullmq-dashboard-api
原文对照：https://npmcn.com/package/%40aios-medical/bullmq-dashboard-api/?lang=original
项目主页：https://github.com/fellahealth/aios-bullmq-dashboard#readme
源码仓库：https://github.com/fellahealth/aios-bullmq-dashboard

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：125 kB，142 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：@aios-medical/bullmq-dashboard-ui ^1\.0\.0
- 首次发布：2026-05-27T20:27:43.386Z
- 最新版本发布：2026-06-05T17:37:47.535Z
- 近 30 天下载量：1970（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

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

## 安装

```sh
npm install @aios-medical/bullmq-dashboard-api
```

也可以使用：`pnpm add @aios-medical/bullmq-dashboard-api`、`yarn add @aios-medical/bullmq-dashboard-api`、`bun add @aios-medical/bullmq-dashboard-api`

## README

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

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

![AIOS BullMQ Dashboard overview](https://raw.githubusercontent.com/fellahealth/aios-bullmq-dashboard/main/screenshots/overview.png)

## 安装

```bash
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 的基本设置

```typescript
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)

```typescript
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` 接受选项对象 :

```typescript
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
});
```

### 桌面选项

配置仪表板行为和外观 :

```typescript
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` 函数返回动态管理队列的方法 :

```typescript
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)]);
```

### 自定义格式

为工作数据添加自定义格式化器 :

```typescript
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() };
});
```

### 可见卫士

根据请求上下文控制队列可见度 :

```typescript
const adapter = new BullMQAdapter(queue);

adapter.setVisibilityGuard((request) => {
  // Only show queue to authenticated admins
  return request.user?.role === 'admin';
});
```

## API 参考

### 创建 Dash 板

创建和配置仪表板实例.

```typescript
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 队列的适配器.

```typescript
constructor(queue: Queue, options?: Partial<QueueAdapterOptions>)
```

### BullMQ阿达普特

BullMQ v5 队列的适配器.

```typescript
constructor(queue: Queue, options?: Partial<QueueAdapterOptions>)
```

## 状态常数

用于类型安全工作状态处理的导入状态常数 :

```typescript
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 (英语)](https://www.npmjs.com/package/@aios-medical/bullmq-dashboard-ui) - 反应UI组件
-   [@aios-medical/bullmq-dashboard-expressed (中文(简体) )](https://www.npmjs.com/package/@aios-medical/bullmq-dashboard-express) - Express.js适配器
-   [@aios-medical/bullmq-dashboard-nesstjs (英语)](https://www.npmjs.com/package/@aios-medical/bullmq-dashboard-nestjs) - 雀巢JS模块

## 常见问题

### @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 和提交记录判断。

