# @amqp-contract/core 中文文档

规范地址：https://npmcn.com/package/%40amqp-contract/core/

版本：3\.0\.0
npm 元数据更新时间：2026-11-12T15:41:57.704Z
中文译文更新时间：2026-11-12T15:44:56.883Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40amqp-contract/core
原文对照：https://npmcn.com/package/%40amqp-contract/core/?lang=original
项目主页：https://github.com/btravstack/amqp-contract#readme
源码仓库：https://github.com/btravstack/amqp-contract

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

- 包体积（解压后）：399 kB，24 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.22
- 运行依赖：3 个
- peer 依赖：unthrown ^5\.3\.0，@opentelemetry/api ^1\.0\.0
- 首次发布：2025-12-23T12:00:28.566Z
- 最新版本发布：2026-11-12T15:41:56.804Z
- 近 30 天下载量：12441（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：51（近 12 个月 51 个）

## 中文简介

AMQP在amqp-合同中建立和管理的核心公用事业

## 安装

```sh
npm install @amqp-contract/core
```

也可以使用：`pnpm add @amqp-contract/core`、`yarn add @amqp-contract/core`、`bun add @amqp-contract/core`

## README

# @amqp-contract/core (英语)

**在amqp-合同中建立和管理AMQP的核心公用事业.**

[![CI](https://github.com/btravstack/amqp-contract/actions/workflows/ci.yml/badge.svg)](https://github.com/btravstack/amqp-contract/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/@amqp-contract/core.svg?logo=npm)](https://www.npmjs.com/package/@amqp-contract/core) [![npm downloads](https://img.shields.io/npm/dm/@amqp-contract/core.svg)](https://www.npmjs.com/package/@amqp-contract/core) [![TypeScript](https://img.shields.io/badge/TypeScript-6.0-blue?logo=typescript)](https://www.typescriptlang.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

这个软件包为从合同定义中建立AMQP地形(交换、队列和装订)提供了集中功能,并定义了 `Logger` 横跨 amqp- contract 包的接口.

📖 **[完整文件 ∗∗](https://btravstack.github.io/amqp-contract)**

## 安装

```bash
npm install @amqp-contract/core
# or
pnpm add @amqp-contract/core
# or
yarn add @amqp-contract/core
```

## 使用量

### 调色器

核心软件包导出一个 `AmqpClient` 类,处理合同中定义的所有AMQP资源的创建.

```typescript
// contract.ts
import {
  defineContract,
  defineEventPublisher,
  defineEventConsumer,
  defineExchange,
  defineQueue,
  defineQueueBinding,
  defineMessage,
} from "@amqp-contract/contract";
import { z } from "zod";

// Define resources
const ordersExchange = defineExchange("orders");
const ordersDlx = defineExchange("orders-dlx");
const orderProcessingQueue = defineQueue("order-processing", {
  deadLetter: { exchange: ordersDlx },
});
// A dead-letter exchange with nothing bound to it discards every rejected
// message, so declare the DLQ and bind it. `orders-dlx` is topic, so `#`
// catches whatever routing key the message arrived with.
const orderDlq = defineQueue("order-processing-dlq");
const orderMessage = defineMessage(z.object({ orderId: z.string() }));

const orderCreatedEvent = defineEventPublisher(ordersExchange, orderMessage, {
  routingKey: "order.created",
});

// Define your contract
export const contract = defineContract({
  publishers: {
    orderCreated: orderCreatedEvent,
  },
  consumers: {
    processOrder: defineEventConsumer(orderCreatedEvent, orderProcessingQueue),
  },
  queues: { orderDlq },
  bindings: { orderDlqBinding: defineQueueBinding(orderDlq, ordersDlx, { routingKey: "#" }) },
});
```

把合同交给一个 `AmqpClient`,它坚持其地形连接:

```typescript
import { AmqpClient } from "@amqp-contract/core";

import { contract } from "./contract.js";

// Setup AMQP resources
const amqpClient = new AmqpClient(contract, {
  urls: ["amqp://localhost"],
});

// Clean up — close() returns an AsyncResult with an empty error channel
await amqpClient.close().get();
```

高级频道配置选项(定制设置、预选、发布器确认),见 [频道配置指南](https://btravstack.github.io/amqp-contract/how-to/configure-channels)。 。 。 .

### 锁定接口

核心包输出 a `Logger` 用于执行AMQP操作自定义记录的接口 :

```typescript
import type { Logger } from "@amqp-contract/core";

const logger: Logger = {
  debug: (message, context) => console.debug(message, context),
  info: (message, context) => console.info(message, context),
  warn: (message, context) => console.warn(message, context),
  error: (message, context) => console.error(message, context),
};

// Pass the logger to client or worker
import { TypedAmqpClient } from "@amqp-contract/client";

const client = await TypedAmqpClient.create({
  contract,
  urls: ["amqp://localhost"],
  logger, // Optional: logs published messages
}).getOrThrow();
```

## API 密码

关于完整的API文档,见 [@amqp-core API 参考文献](https://btravstack.github.io/amqp-contract/api/core)。 。 。 .

## 文档

📖 **[读取全部文件](https://btravstack.github.io/amqp-contract)**

## 许可证

麻省理工学院

## 常见问题

### @amqp-contract/core 是什么？

AMQP在amqp-合同中建立和管理的核心公用事业

### 如何安装 @amqp-contract/core？

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

### @amqp-contract/core 支持 TypeScript 吗？

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

### @amqp-contract/core 支持 ESM 还是 CommonJS？

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

### @amqp-contract/core 需要什么版本的 Node\.js？

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

### @amqp-contract/core 可以商用吗？

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

### @amqp-contract/core 的下载量有多少？

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

### @amqp-contract/core 还在维护吗？

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

