@btravstack/outbox

中文文档
0.58.0发布于 2026/11/08MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 8076

@btravstack/core的交易出柜中继器:一个按出柜顺序公布已承诺事实的民意调查循环,一个按租户要求的复制品轮流进行而不是竞相进行,以及一个Prisma 8商店

中文使用文档
文档目录5 节
  1. 实例
  2. 一个独立的中继程序
  3. 选项
  4. 它决定什么,它没有
  5. 许可证

@ btravstack/ 发包箱

交易收发箱中继器 @btravstack/core: 民意测验循环 以收发箱顺序公布事实的 因此,复制品是轮流的,而不是为同一行的比赛 8号店.

📖 文档 • 妇女 API 参考

pnpm add @btravstack/outbox @btravstack/core @btravstack/config @btravstack/di unthrown temporal-polyfill

@prisma/orm-postgres 是一个可选的对等点,只有在您编曲时需要 Prisma 商店来自 @btravstack/outbox/prisma节点 >=22.12。 。 。 .

发生时间戳是 Temporal.Instant,保存数据库微秒 通过阅读和出版。 按顺序排列 toString(); 使用 epochMilliseconds 仅限一毫秒的融合需要它.

实例

应用程序在与其相同的交易中写出其外框行 描述——保持自己的状态. 它能提供继电器的是桌子的位置 出版一行意味着:

import { OutboxPublisher, OutboxStore, outbox } from "@btravstack/outbox";
import { prismaOutboxStore } from "@btravstack/outbox/prisma";

const store = Provider(OutboxStore)({
  inject: { db: OrderDatabase },
  sync: ({ db }) => prismaOutboxStore(db, { schema: "orders" }),
});

const publisher = Provider(OutboxPublisher)({
  inject: { broker: Broker },
  sync: ({ broker }) => ({
    publish: (message) =>
      broker.send(`${message.kind}.changed`, {
        eventId: message.id,
        tenantId: message.tenantId,
        id: message.subjectId,
        payload: message.payload === null ? null : JSON.parse(message.payload),
      }),
  }),
});

export const Relay = Module("Relay")({
  imports: [OrderPersistenceModule, BrokerModule, outbox()],
  provides: [store, publisher],
  exports: [],
});

一个独立的中继程序

使用 outboxRuntime() 替换 outbox() 和导出 OutboxRuntime 财务报告和审定财务报表 HealthChecks 从根相传 runMain开始投票时间 在SIGTERM排水过程中停止新的索赔. 排水槽等待当前索赔, 直至内核的最后期限; 瞄准镜拆卸等待 在发布数据库和出版商资源之前 内核停站截止时间. 相同的选项和出箱时滞检查适用 .

这个 独立实例 显示完整的根。 保留 outbox() 将中继器嵌入 HTTP 或 工人过程.

选项

选项何处这是什么
OUTBOX_TENANTS环境,或 tenants接力服务,以逗号分隔的租户
OUTBOX_POLL_MS环境,或 pollMs横扫之间闲置睡眠( 默认) 200(中文(简体) )
OUTBOX_MAX_LAG_MS环境,或 maxLagMs最年长的待决年龄 outbox 健康检查容忍(默认60 s)
OUTBOX_RETAIN_MS环境,或 retainMs在中继删除之前, 已公布行会保存多久( 默认: 保存)
OUTBOX_CONCURRENCY环境,或 concurrency有多少房客要求一次性提供联通服务(4(中文(简体) )
clockoutbox({ clock })民意调查所沉睡的,和所发现的滞后(默认): systemClock(中文(简体) )
schema, (中文(简体) ), tableprismaOutboxStore(db, {…})模型所在位置( 默认) public, (中文(简体) ), outboxMessage(中文(简体) )
columnsprismaOutboxStore(db, {…})物理列名称,用于绘制模型 @map
tenantSettingprismaOutboxStore(db, {…})每一个房客的读物被固定在,因为 @@rls (单位:千美元)app.tenant_id(中文(简体) )

完整表——默认,语义,表的PSL和推理——活 打开 参考页, (中文(简体) ), 这张名单是详细的.

它决定什么,它没有

决定 送货时间最少一次 接发器发布 租户在他们要求的会话中生活的时候 而不是竞相争取租户的排位 和租户所犯事实 出箱顺序( 这不是承诺命令 : 参考页上写的是什么 ) 表示主题); 会话丢失了中节, 如发布器之间崩溃 及其标记,复出者,即被拒绝者 公布其租户的批次 并背着租户离开 落在后面是不健康的 /healthz。订阅者在 出版商在电线上放的.

它没有决定 什么样的出版物, 什么样的运输 它骑或如何 有效载荷被编码——这是你的 OutboxPublisher - 或交易 写行,这是你的适配器。 没有完全的一对一,没有 第二家商店; 原因在 AGENTS.md。 。 。 .

许可证

麻省理工学院

版本与发布记录

@btravstack/outbox 共发布 48 个版本,首次发布于 2026/10/08;过去 12 个月发布了 48 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.58.0latest2026/11/08今天
0.57.02026/11/071 天前
0.56.12026/11/062 天前
0.56.02026/11/062 天前
0.55.12026/11/035 天前
0.55.02026/11/035 天前

关于 @btravstack/outbox 的常见问题

@btravstack/outbox 是什么?

@btravstack/core的交易出柜中继器:一个按出柜顺序公布已承诺事实的民意调查循环,一个按租户要求的复制品轮流进行而不是竞相进行,以及一个Prisma 8商店

如何安装 @btravstack/outbox?

在项目目录运行 npm install @btravstack/outbox,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:unthrown(^5.0.0)、@btravstack/di(^0.58.0)、@btravstack/core(^0.58.0)、temporal-polyfill(^1.0.4)、@btravstack/config(^0.58.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@btravstack/outbox 支持 TypeScript 吗?

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

@btravstack/outbox 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@btravstack/outbox 需要什么版本的 Node.js?

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

@btravstack/outbox 可以商用吗?

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

@btravstack/outbox 的下载量有多少?

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

@btravstack/outbox 还在维护吗?

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