# @confluentinc/schemaregistry 中文文档

规范地址：https://npmcn.com/package/%40confluentinc/schemaregistry/

版本：1\.11\.0
npm 元数据更新时间：2026-10-07T18:49:20.580Z
中文译文更新时间：2026-11-10T15:21:11.300Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40confluentinc/schemaregistry
原文对照：https://npmcn.com/package/%40confluentinc/schemaregistry/?lang=original
项目主页：https://github.com/confluentinc/confluent-kafka-javascript#readme
源码仓库：https://github.com/confluentinc/confluent-kafka-javascript

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

- 包体积（解压后）：1.6 MB，294 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：28 个
- 首次发布：2024-09-26T06:58:09.034Z
- 最新版本发布：2026-10-07T18:49:20.389Z
- 近 30 天下载量：352717（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：55（近 12 个月 20 个）

## 中文简介

Confluent Schema 注册的节点客户端

## 安装

```sh
npm install @confluentinc/schemaregistry
```

也可以使用：`pnpm add @confluentinc/schemaregistry`、`yarn add @confluentinc/schemaregistry`、`bun add @confluentinc/schemaregistry`

## README

# 用于 Schema 注册的 JavaScript 客户端TM 电话

Conluent 的 JavaScript 客户端 [Schema 书记官处](https://docs.confluent.io/cloud/current/sr/index.html) 支持Avro,Protobuf和JSON Schema,并旨在与 [Confluent 用于 Apache Kafka 的 JavaScript 客户端](https://www.npmjs.com/package/@confluentinc/kafka-javascript)。 。 。 . 目的是按照Schema注册公司的其他客户提供高性能、可靠和易于使用的JavaScript客户端 就像我们 [走开](https://github.com/confluentinc/confluent-kafka-go), (中文(简体) ), [. NET 网络](https://github.com/confluentinc/confluent-kafka-dotnet), (中文(简体) ), 财务报告和审定财务报表 [爪哇语](https://github.com/confluentinc/schema-registry) 客户.

## 安装

```bash
npm install @confluentinc/schemaregistry
```

## 开始

下面是使用Avro系列化的简单例子,与Schema注册客户端和KafkaJS客户端.

```javascript
const { Kafka } = require('@confluentinc/kafka-javascript').KafkaJS;
const { SchemaRegistryClient, SerdeType, AvroSerializer, AvroDeserializer} = require('@confluentinc/schemaregistry');

const registry = new SchemaRegistryClient({ baseURLs: ['http://localhost:8081'] })
const kafka = new Kafka({
  kafkaJS: {
    brokers: ['localhost:9092']
  }
});

let consumer = kafka.consumer({
  kafkaJS: {
    groupId: "test-group",
    fromBeginning: true,
  },
});
let producer = kafka.producer();

const schema = {
  type: 'record',
  namespace: 'examples',
  name: 'RandomTest',
  fields: [
    { name: 'fullName', type: 'string' }
  ],
};

const topicName = 'test-topic';
const subjectName = topicName + '-value';

const run = async () => {
  // Register schema
  const id = await registry.register(
    subjectName,
    {
      schemaType: 'AVRO',
      schema: JSON.stringify(schema)
    }
  )

  // Create an Avro serializer
  const ser = new AvroSerializer(registry, SerdeType.VALUE, { useLatestVersion: true });

  // Produce a message with the schema
  await producer.connect()
  const outgoingMessage = {
    key: 'key',
    value: await ser.serialize(topicName, { fullName: 'John Doe' }),
  }
  await producer.send({
    topic: topicName,
    messages: [outgoingMessage]
  });
  console.log("Producer sent its message.")
  await producer.disconnect();
  producer = null;

  // Create an Avro deserializer
  const deser = new AvroDeserializer(registry, SerdeType.VALUE, {});

  await consumer.connect()
  await consumer.subscribe({ topic: topicName })

  let messageRcvd = false;
  await consumer.run({
    eachMessage: async ({ message }) => {
      const decodedMessage = {
        ...message,
        value: await deser.deserialize(topicName, message.value)
      };
      console.log("Consumer received message.\nBefore decoding: " + JSON.stringify(message) + "\nAfter decoding: " + JSON.stringify(decodedMessage));
      messageRcvd = true;
    },
  });

  // Wait around until we get a message, and then disconnect.
  while (!messageRcvd) {
    await new Promise((resolve) => setTimeout(resolve, 100));
  }

  await consumer.disconnect();
  consumer = null;
}

run().catch (async e => {
  console.error(e);
  consumer && await consumer.disconnect();
  producer && await producer.disconnect();
  process.exit(1);
})
```

## 特征和限制

-   Avro、Protobuf和JSON Schema的支持
-   支持 CSFLE( 连续的字段加密)
-   支持数据质量规则
-   支持为Avro和JSON Schema制定移民规则
-   对 OAuth 的支持

## 捐款

错误报告和反馈以"Github Issues"的形式获得赞赏. 关于捐款准则,请参见: [捐款额](https://npmcn.com/package/%40confluentinc/schemaregistry/CONTRIBUTING.md)

## 常见问题

### @confluentinc/schemaregistry 是什么？

Confluent Schema 注册的节点客户端

### 如何安装 @confluentinc/schemaregistry？

在项目目录运行 npm install @confluentinc/schemaregistry，或使用 pnpm add / yarn add / bun add。

### @confluentinc/schemaregistry 支持 TypeScript 吗？

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

### @confluentinc/schemaregistry 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @confluentinc/schemaregistry 可以商用吗？

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

### @confluentinc/schemaregistry 的下载量有多少？

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

### @confluentinc/schemaregistry 还在维护吗？

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

