# @adonis-agora/durable 中文文档

规范地址：https://npmcn.com/package/%40adonis-agora/durable/

版本：0\.59\.0
npm 元数据更新时间：2026-11-04T22:49:14.888Z
中文译文更新时间：2026-11-05T22:09:38.213Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40adonis-agora/durable
原文对照：https://npmcn.com/package/%40adonis-agora/durable/?lang=original
项目主页：https://davidecarvalho.github.io/agora/docs/durable
源码仓库：https://github.com/DavideCarvalho/adonis-agora-durable

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

- 包体积（解压后）：10.1 MB，725 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24
- 运行依赖：1 个
- peer 依赖：bullmq ^5\.0\.0 \|\| ^6\.0\.0，vitest ^3\.0\.0 \|\| ^4\.0\.0 \|\| ^5\.0\.0，ioredis ^5\.0\.0 \|\| ^6\.0\.0，cron-parser ^5\.0\.0，@adonisjs/core ^7\.3\.0，@adonisjs/lucid ^22\.4\.0，@adonisjs/queue ^0\.6\.0 \|\| ^0\.7\.0，@adonisjs/redis ^9\.2\.0 \|\| ^10\.0\.0 \|\| ^11\.0\.0，@opentelemetry/api ^1\.0\.0，@adonisjs/assembler ^8\.4\.0
- 首次发布：2026-06-23T04:14:13.806Z
- 最新版本发布：2026-11-04T22:49:14.532Z
- 近 30 天下载量：13863（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：112（近 12 个月 112 个）

## 中文简介

AdonisJS的可持久跨应用工作流程——定型重放引擎,AdonisJS捆绑,Ace命令,仪表板,OpenTeleometry,望远镜,测试拉带和Redis的收录,都在一个包中. 阿戈拉生态系统的一部分.

## 安装

```sh
npm install @adonis-agora/durable
```

也可以使用：`pnpm add @adonis-agora/durable`、`yarn add @adonis-agora/durable`、`bun add @adonis-agora/durable`

## README

# `@adonis-agora/durable`

[![npm version](https://img.shields.io/npm/v/@adonis-agora/durable)](https://www.npmjs.com/package/@adonis-agora/durable) [![npm downloads](https://img.shields.io/npm/dm/@adonis-agora/durable)](https://www.npmjs.com/package/@adonis-agora/durable) [![CI](https://github.com/DavideCarvalho/adonis-agora-durable/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/DavideCarvalho/adonis-agora-durable/actions/workflows/ci.yml) [![license](https://img.shields.io/npm/l/@adonis-agora/durable)](https://www.npmjs.com/package/@adonis-agora/durable)

AdonisJS 的可持久、可更新的工作流程: 将工作流程写成纯音码; 每一步都是 检查完毕,所以跑道能幸存下来 坠机,部署和恢复到最后一步. 步骤可在流程中运行,也可在远程工人(其他Adonis流程、NestJS员工或 Python工人),它保持一个运行的时间段.

```sh
node ace add @adonis-agora/durable
```

定义工作流程 `app/workflows/` (自动注册在靴子上):

```ts
// app/workflows/order_workflow.ts
import { BaseWorkflow, type WorkflowCtx } from '@adonis-agora/durable'

export default class OrderWorkflow extends BaseWorkflow {
  static workflow = { name: 'order', version: '1' }

  async run(ctx: WorkflowCtx, order: { id: number; total: number }) {
    const charge = await ctx.localStep('charge', async () => chargeCard(order))
    await ctx.localStep('ship', async () => ship(charge))
    return { status: 'shipped' }
  }
}
```

从控制器开始,并使用引擎服务 其他一切:

```ts
import OrderWorkflow from '#workflows/order_workflow'
import engine from '@adonis-agora/durable/services/main'

const { runId } = await OrderWorkflow.dispatch({ id: 1, total: 4200 }, { runId: 'order:1' })
const result = await engine.waitForRun(runId)
```

默认为内存存储 + 只测试 `memory` 运输(单一工艺,以下为零). 提供长期储存和跨流程运输 `config/durable.ts` 用于生产. 何时 `@adonis-agora/context` 安装了原租户/用户/同族运输机 每一个派遣的任务(最优等,无严重依赖).

完整文档 : [https://davidecarvalho.github.io/agora/docs/ducable 页面存档备份,存于互联网档案馆](https://davidecarvalho.github.io/agora/docs/durable)

## 运输

按名称在 `config/durable.ts`数字 :

-   `transports.eventEmitter()` —— 说 **生产** 在一个节点上运输 `EventEmitter`零外部基础设施(没有DB、没有Redis、没有经纪人):步骤 处理器在同一过程中运行,与发送工作流程脱钩 事件循环。 用于单流程生产应用.
-   `transports.queue({ connection })` ——跨流程结束 `@adonisjs/queue`。 。 。 .
-   `transports.db({ connection })` ——跨应用程序数据库的跨进程 (单位:千美元)`@adonisjs/lucid`没有经纪人.
-   `transports.bullmq({ connection })` ——在Redis上的BullMQ上交叉处理相容电线 与雀巢`nestjs-durable`公牛MQ运输与Python工人. 说对了 `controlPlanes.redis(...)`。 。 。 .
-   `transports.memory()` ——只测试(驱动器) `dispatch` 直入接头.

```ts
import { defineConfig, transports } from '@adonis-agora/durable'

export default defineConfig({
  transport: 'event-emitter',
  transports: {
    'event-emitter': transports.eventEmitter(),
  },
})
```

## 工作流代码( assembler hook)

`node ace configure` 登记两个AdonisJS **阿森布尔 `init` 钩子** 生成 类型桶 `app/workflows/` 财务报告和审定财务报表 `app/steps/` 建立/保存时间——核心是如何生成的 控制器/活动/听众桶。 提供者进口生成的 装入桶并登记 `BaseWorkflow` 类和步骤,而不是扫描 目录 `readdir` 在运行时间。 文件监视器重生一桶 当工作流程或步骤文件更改时。 桶通过 `#workflows/*` 财务报告和审定财务报表 `#steps/*` 子路径导入, 其中 `configure` 添加到您身边 `package.json`。 。 。 .

登记在册 `adonisrc.ts` (单位:千美元) `configure` 命令执行此任务 :

```ts
export default defineConfig({
  hooks: {
    init: [
      () => import('@adonis-agora/durable/hooks/workflows'),
      () => import('@adonis-agora/durable/hooks/steps'),
    ],
  },
})
```

如果钩子没有注册(或枪管尚未生成) 提供者 **掉头** 到运行时目录扫描,所以不选择加入的应用程序 保持工作不变。 完全脱离发现 `workflowsPath: false` (或 `stepsPath: false`) (中文(简体) ).

一个模块化的应用程序可以列出多个目录: `workflowsPath` 编号 : `stepsPath` 带 一个阵列,钩子也一样 `source` 选项。 名字必须是独特的 这些目录, 冲突失败, 无法命名两个文件 .

## 许可证

麻省理工学院

## 常见问题

### @adonis-agora/durable 是什么？

AdonisJS的可持久跨应用工作流程——定型重放引擎,AdonisJS捆绑,Ace命令,仪表板,OpenTeleometry,望远镜,测试拉带和Redis的收录,都在一个包中\. 阿戈拉生态系统的一部分\.

### 如何安装 @adonis-agora/durable？

在项目目录运行 npm install @adonis-agora/durable，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@adonisjs/core（^7\.3\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @adonis-agora/durable 支持 TypeScript 吗？

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

### @adonis-agora/durable 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @adonis-agora/durable 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @adonis-agora/durable 可以商用吗？

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

### @adonis-agora/durable 的下载量有多少？

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

### @adonis-agora/durable 还在维护吗？

最新版本 0\.59\.0 发布于 2026/11/05（1 天前）；至今共发布 112 个版本，其中过去 12 个月发布了 112 个；首次发布于 2026/06/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

