KafkaJS Confluent Schema Registry 使用教程

KafkaJS Confluent Schema Registry 使用教程

confluent-schema-registry is a library that makes it easier to interact with the Confluent schema registry confluent-schema-registry 项目地址: https://gitcode.com/gh_mirrors/co/confluent-schema-registry

1. 项目介绍

KafkaJS Confluent Schema Registry 是一个开源库,它简化了与 Confluent Schema Registry 的交互。该库提供了方便的方法来编码、解码和注册新的架构,使用 Apache Avro 序列化格式和 Confluent 的线格式。它旨在与 KafkaJS 一起使用,为 Kafka 消息提供架构注册和序列化/反序列化支持。

2. 项目快速启动

首先,确保你已经安装了 Node.js 环境。以下是快速启动 KafkaJS Confluent Schema Registry 的步骤:

# 安装依赖
npm install @kafkajs/confluent-schema-registry kafkajs

# 创建一个新的 JavaScript 文件,例如 index.js,并添加以下代码

const { Kafka } = require('kafkajs');
const { SchemaRegistry } = require('@kafkajs/confluent-schema-registry');

const kafka = new Kafka({
  clientId: 'my-app',
  brokers: ['kafka1:9092']
});

const registry = new SchemaRegistry({
  host: 'http://registry:8081/'
});

const consumer = kafka.consumer({
  groupId: 'test-group'
});

const run = async () => {
  await consumer.connect();
  await consumer.subscribe({
    topic: 'test-topic',
    fromBeginning: true
  });

  await consumer.run({
    eachMessage: async ({ topic, partition, message }) => {
      const decodedKey = await registry.decode(message.key);
      const decodedValue = await registry.decode(message.value);
      console.log({
        decodedKey,
        decodedValue
      });
    }
  });
};

run().catch(console.error);

然后,在命令行中运行以下命令启动你的应用:

node index.js

3. 应用案例和最佳实践

案例一:消息生产者

在生产者端,你需要确保消息在发送到 Kafka 之前已经使用了正确的架构进行了编码。

const producer = kafka.producer();
await producer.connect();

const encodedKey = await registry.encode(keySchema, keyPayload);
const encodedValue = await registry.encode(valueSchema, valuePayload);

await producer.send({
  topic: 'test-topic',
  messages: [
    { key: encodedKey, value: encodedValue }
  ],
});

await producer.disconnect();

案例二:消息消费者

在消费者端,你需要解码从 Kafka 接收到的消息。

const consumer = kafka.consumer({
  groupId: 'test-group'
});

await consumer.connect();
await consumer.subscribe({
  topic: 'test-topic',
  fromBeginning: true
});

await consumer.run({
  eachMessage: async ({ topic, partition, message }) => {
    const decodedKey = await registry.decode(message.key);
    const decodedValue = await registry.decode(message.value);
    console.log({
      decodedKey,
      decodedValue
    });
  }
});

4. 典型生态项目

  • KafkaJS: KafkaJS 是一个纯 JavaScript 编写的 Kafka 客户端库。
  • Confluent Schema Registry: Confluent Schema Registry 是一个配套 Apache Kafka 的服务,它允许你存储和查找 Avro、Protobuf 和 JSON 架构。

以上是 KafkaJS Confluent Schema Registry 的基本使用教程。希望这能帮助您更好地理解和运用这个库。

confluent-schema-registry is a library that makes it easier to interact with the Confluent schema registry confluent-schema-registry 项目地址: https://gitcode.com/gh_mirrors/co/confluent-schema-registry

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温玫谨Lighthearted

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值