@application-kit/transaction-outbox

中文文档
0.4.1发布于 2026/11/05MITTypeScriptESM + CJS近 30 天下载 2198

交易收发箱 QQ TypeORM: QQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

中文使用文档
文档目录6 节
  1. Установка
  2. Подключение
  3. Запись
  4. Версия
  5. Миграция
  6. Тесты

@ application- kit/ 切换出局

交易收发箱 QQ TypeORM \ NestJS : # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## # # # # # ## # # # #### ### transaction_outboxes {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你应该知道 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你是谁 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 queue_name 卡夫卡(英语:Event Router, route.by.field: queue_name) (中文(简体) ).

Установка

yarn add @application-kit/transaction-outbox

对等者 : @application-kit/kafka 页:1 /event-contract, (中文(简体) ), @application-kit/typeorm, (中文(简体) ), @libs-for-dev/nestjs-ddd-library, (中文(简体) ), @nestjs/common, (中文(简体) ), @nestjs/core, (中文(简体) ), @nestjs/typeorm, (中文(简体) ), nestjs-pino, (中文(简体) ), oxide.ts, (中文(简体) ), typeorm。 。 。 . kafkajs и @nestjs/microservices не:пакет也 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢.

Подключение

- Приложение,из: TransactionOutboxModule {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢.

import {
  TRANSACTION_OUTBOX_LOGGER,
  TRANSACTION_OUTBOX_REQUEST_FACTS,
  TransactionOutboxLogger,
} from '@application-kit/transaction-outbox'

@Global()
@Module({
  exports: [TRANSACTION_OUTBOX_LOGGER, TRANSACTION_OUTBOX_REQUEST_FACTS],
  providers: [
    { provide: TRANSACTION_OUTBOX_LOGGER, useClass: TransactionOutboxLogger },
    { provide: TRANSACTION_OUTBOX_REQUEST_FACTS, useValue: () => ({ ip: currentIp() }) },
  ],
})
class CommonModule {}
  • TRANSACTION_OUTBOX_LOGGER любой класс error(context, message)· ; TransactionOutboxLogger —— 说 реализация nestjs-pino (нужен LoggerModule) (中文(简体) ).
  • TRANSACTION_OUTBOX_REQUEST_FACTS ——обогащения:функция也 ложится в payload.facts событий carriesRequestFacts: true。 。 。 。 . QQ 用户代理QQ resolveRequestFacts из @application-kit/observability/http; текущий {\fn黑体\fs20\shad2\2ah82\3ah20\4ah33\fscx95\3ch592001\be1}♪#################################################################################################################################################################################################################################### AsyncLocalStorage。 。 。 . Хук:него也 carriesRequestFacts пишутся facts。 。 。 .

Запись

const result = await outbox.save([new UserWasCreatedEvent({ id })], async () => {
  return repository.save(user)
})

Колбэк:это也, save отвечает Ok(true)。 。 。 . Result нужен, ? когда.

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得怎样. Err {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 значением. save {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢 save {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢. Репозитории,которые也 TransactionAwareTypeOrmModule.forFeature([...]) вместо TypeOrmModule.forFeature。 。 。 .

Версия

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 versionedQueueName(queueName, eventVersion) из @application-kit/kafka/event-contract? ? ? ? ? 吗 <queue>.v<N>。 。 。 . Базовый AbstractSingleIdOutboxEvent фиксирует 1。 。 。 .

Миграция

Пакет orm . . . . . TransactionOutboxEntity и и TransactionOutbox1734780489810 классами:передайте也 packages qQ CLI 数据来源. {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 migrations {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得怎么样.

import { orm as outboxOrm } from '@application-kit/transaction-outbox'

createCliDataSource({ ..., packages: [outboxOrm] }) // @application-kit/typeorm/nest

Тесты

import { TransactionOutboxFake } from '@application-kit/transaction-outbox/testing'

const outbox = new TransactionOutboxFake(logger)
await service.run()
expect(outbox.events.size).toBe(1)

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 events {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你应该知道 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你是谁 Err {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢.

版本与发布记录

@application-kit/transaction-outbox 共发布 10 个版本,首次发布于 2026/10/06;过去 12 个月发布了 10 个版本。

版本发布日期距今
0.4.1latest2026/11/052 天前
0.4.02026/11/052 天前
0.3.32026/11/052 天前
0.3.22026/10/2612 天前
0.3.12026/10/2118 天前
0.3.02026/10/1721 天前

关于 @application-kit/transaction-outbox 的常见问题

@application-kit/transaction-outbox 是什么?

交易收发箱 QQ TypeORM: QQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

如何安装 @application-kit/transaction-outbox?

在项目目录运行 npm install @application-kit/transaction-outbox,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:typeorm(^1.0.0)、oxide.ts(^1.1.0)、nestjs-pino(^4.6.1)、@nestjs/core(^11.0.0)、@nestjs/common(^11.0.0)、@nestjs/typeorm(^11.0.3 || ^12.0.0)、@libs-for-dev/nestjs-ddd-library(^1.4.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@application-kit/transaction-outbox 支持 TypeScript 吗?

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

@application-kit/transaction-outbox 支持 ESM 还是 CommonJS?

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

@application-kit/transaction-outbox 需要什么版本的 Node.js?

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

@application-kit/transaction-outbox 可以商用吗?

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

@application-kit/transaction-outbox 的下载量有多少?

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

@application-kit/transaction-outbox 还在维护吗?

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