Confluent 用于 Apache Kafka 的 JavaScript 客户端
光滑-kafka-javascript 是 Conluent 的 JavaScript 客户端,用于 阿帕奇·卡夫卡 编辑 连接平台。目的是提供一个基于 JavaScript 客户端的高效、可靠和易于使用 节点-rdkafka 但仍然与 卡夫卡·贾斯 为用户提供灵活性并简化其他客户的迁移.
特征 :
-
业绩好 -相容-kafka-javascript是一个轻量级包装器周围 利布尔德卡夫卡一个精细的C 客户端.
-
可靠性 - 写阿帕奇·卡夫卡时有很多细节需要了解 客户端。 我们让他们在一个地方(Librdkafka) 利用这项工作 我们所有的客户.
-
支助 - 商业支助由下列人员提供: 调和。 。 。 .
-
未来证明 - 团结,由 卡夫卡的创造者们正在建设 流线平台 以Apache Kafka为核心。 客户的功能对我们来说是重中之重 与核心 Apache Kafka 及其组件同步 连接平台。 。 。 .
这个库利用两个受欢迎的Apache Kafka JavaScript客户端的工作和概念: 节点-rdkafka 财务报告和审定财务报表 卡夫卡·贾斯。核心主要基于节点-rdkafka库,它使用我们自己的 利布尔德卡夫卡 用于核心客户端功能的库。 然而,我们利用一个被打通的API和一个更平庸的接口,类似于KafkaJS中的接口,使得开发者很容易根据他们喜欢的模式和接口来迁移和采用这个客户端. 我们很高兴能够利用这些图书馆的许多作者的出色工作!
用于 Schema 书记官处,使用 @ conflontinc/ schemaregistry (中文(简体) ) 兼容此库的库。 简单的登记办法,见 页:1。 。 。 .
所需资源
支持以下配置:
- Linux(x64和arm64) - 我们支持基于musl和glibc的分布:
| 分发 | 支持的节点版本 |
|---|---|
| 德比安公牛/乌邦图 20.04 | 18、20、21、22、23、24 |
| 德比活书虫/Ubuntu 22.04 | 18、20、21、22、23、24 |
| 阿尔卑斯 Linux 3.20+ | 18、20、21、22、23、24 |
| AlmaLinux 9/Rocky Linux 9/CentOS 第9流 | 18、20、21、22、23、24 |
其它的发售可能会给一个现代版本的gcc/glibc工作,但我们不会用它们测试预建的二进制.
- Linux (s390x/IBM Z)-基于glibc和musl的发售,节点版本为18,20,21,22,23和24. 预建的二进制在Ubuntu 20.04, 22.04, 24.04和26.04, Debian Trixie, Alpine Linux, 和 AlmaLinux 9/ Rocky Linux 9/ CentOS Stream 9. 上进行测试.
- macOS - arm64/m1. 马克OS (英特尔)得到最好的支持. 节点版本18,20,21,22,23和24得到支持.
- Windows - x64 (英语). 节点版本18,20,21,22,23和24得到支持.
[尖叫声] 预建的二进制支持将在节点版本或OS的EOL后被放弃.
在其中任何一个平台上安装都意味着无缝,不需要任何C/C++编译.
npm install @confluentinc/kafka-javascript
如果您的系统配置不在所支持的系统之内, 请检查详细信息 安装指令 更多信息.
Yarn和pnpm的支持是实验性的.
开始
下面是使用被打包的API的简单产品示例.
生产申请应当与Schema Registration进行序列化. 生成纯字符串 价值观导致数据质量问题、消费者破裂和数据无法治理。 这个 示例 @ conflontinc/ schemaregistry (中文(简体) ) 软件包,该软件包单独安装.
替换每个 <fill> 与自己的价值。 这个例子涉及两个终点——
a Kafka集群和Schema登记簿——在相通云上,各有自己的
API密钥和秘密.
const { Kafka } = require('@confluentinc/kafka-javascript').KafkaJS;
const { kafkaJsonSerializerBuilder } = require('@confluentinc/schemaregistry');
async function producerStart() {
// The producer builds the serializer while it connects and applies it to
// every message value. autoRegisterSchemas registers the schema on first
// produce. Use useLatestVersion instead when the schema is already registered.
const valueSerializerBuilder = kafkaJsonSerializerBuilder()
.setClientConfig({
baseURLs: ['<fill>'],
basicAuthCredentials: {
credentialsSource: 'USER_INFO',
// Schema Registry API key and secret, as '<key>:<secret>'. These
// are a separate credential from the Kafka API key used below.
userInfo: '<fill>:<fill>',
},
})
.setJsonSerializerConfig({ autoRegisterSchemas: true });
const producer = new Kafka().producer({
'bootstrap.servers': '<fill>',
'security.protocol': 'SASL_SSL',
'sasl.mechanisms': 'PLAIN',
'sasl.username': '<fill>',
'sasl.password': '<fill>',
'js.value.serializer.builder': valueSerializerBuilder,
});
await producer.connect();
console.log("Connected successfully");
const user = { name: 'Confluent', favoriteNumber: 42 };
await producer.send({
topic: 'test-topic',
messages: [
{ value: user, key: 'user1' },
],
});
await producer.disconnect();
console.log("Disconnected successfully");
}
producerStart();
Schema 登记处的一体化 js.*.serializer.builder 财务报告和审定财务报表 js.*.deserializer.builder 财产)和 clusterId() 是实验性的,未来释放可能会发生变化.
Avro的例子,它也消耗和消毒,见 页:1。 。 。 .
这个库提供的API有两个变体. 混合式API和回调式API.
- 如果你重新开始,你应该使用 混合 API。 。 。 .
- 如果你正在迁徙 从
kafkajs,可以使用 移徙指南 尽快开始. - 如果你正在迁徙 从
node-rdkafka,可以使用 移徙指南。 。 。 .
可在 导言。 。 。 .
捐款
错误报告和反馈以"Github Issues"的形式获得赞赏. 关于捐款准则,请参见: 捐款额
Librdkafka 版本 翻译
| 光滑-kafka-javascript | 利布尔德卡夫卡 |
|---|---|
| 1.0.0 (单位:千美元) | 2.6.1 国家 |
| 1.2.0 (中文(简体) ) | 2.8.0 (中文(简体) ) |
| 1.3.0 (单位:千美元) | 2.1.0 国家 |
| 1.3.1 国家 | 2.1.0 国家 |
| 1.3.2 | 2.10.1 国家 |
| 1.4.0 (中文(简体) ) | 2.11.0. 国家 |
| 1.4.1 国家 | 2.1.1.1 国家 |
| 1.5.0 (中文(简体) ) | 2.1.1.1 国家 |
| 1.6.0 (简体中文) | 2.1.20. 国家 |
| 1.7.0 (单位:千美元) | 2.12.1 |
| 1.8.0 国家 | 2.13.0 (韩语) |
| 1.8.2 国家 | 2.1.3.2 |
| 1.9.0 导弹 | 2.14.0 (中文(简体) ) |
| 1.9.1 国家 | 2.1.4.2 |
| 1.1.0 (中文(简体) ) | 2.1.5 |
| 1.10.1 国家 | 2.15.1 联合国 |
| 1.11.0 国家 | 2.1.6 |
如果使用预建的二进制,这种映射是适用的. 否则,您可以用以下命令检查librdkafka版本:
node -e 'console.log(require("@confluentinc/kafka-javascript").librdkafkaVersion)'