Kafka API
- 微信公众号:阿俊的学习记录空间
- 小红书:ArnoZhang
- wordpress:arnozhang1994
- 博客园:arnozhang
- CSDN:ArnoZhang1994
Kafka 包含五个核心 API:
- Producer API 允许应用程序将数据流发送到 Kafka 集群中的topic。
- Consumer API 允许应用程序从 Kafka 集群中的topic读取数据流。
- Streams API 允许将输入topic的数据流转换为输出topic的数据流。
- Connect API 允许实现连接器,持续地从某个源系统或应用程序拉取数据到 Kafka,或将数据从 Kafka 推送到某个接收系统或应用程序中。
- Admin API 允许管理和检查topic、代理以及其他 Kafka 对象。
Kafka 将其所有功能通过一个与语言无关的协议暴露出来,并且有很多编程语言的客户端可用。然而,只有 Java 客户端是作为 Kafka 主项目的一部分进行维护的,其他客户端则作为独立的开源项目提供。这里有一个非 Java 客户端的列表。
Producer API
Producer API 允许应用程序将数据流发送到 Kafka 集群中的topic。
如何使用 Producer 的示例可以在 javadoc 中找到。
要使用 Producer,可以使用以下 Maven 依赖:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.8.0</version>
</dependency>
Consumer API
Consumer API 允许应用程序从 Kafka 集群中的topic读取数据流。
如何使用 Consumer 的示例可以在 javadoc 中找到。
要使用 Consumer,可以使用以下 Maven 依赖:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.8.0</version>
</dependency>
Streams API
Streams API 允许将输入topic的数据流转换为输出topic的数据流。
如何使用 Streams API 的示例可以在 javadoc 中找到。
有关使用 Streams API 的更多文档可以在这里找到。
要使用 Kafka Streams,可以使用以下 Maven 依赖:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>3.8.0</version>
</dependency>
如果使用 Scala,你可以选择性地包含 kafka-streams-scala
库。关于如何使用 Kafka Streams 的 Scala DSL,可以在开发者指南中找到更多文档。
要在 Scala 2.13 中使用 Kafka Streams DSL,可以使用以下 Maven 依赖:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams-scala_2.13</artifactId>
<version>3.8.0</version>
</dependency>
Connect API
Connect API 允许实现连接器,持续从某个源数据系统拉取数据到 Kafka,或将数据从 Kafka 推送到某个接收数据系统。
许多使用 Connect 的用户无需直接使用此 API,他们可以使用预构建的连接器而无需编写任何代码。有关使用 Connect 的更多信息可以在这里找到。
想要实现自定义连接器的用户可以参考 javadoc。
Admin API
Admin API 支持管理和检查topic、代理、ACL 以及其他 Kafka 对象。
要使用 Admin API,请添加以下 Maven 依赖:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.8.0</version>
</dependency>
相关package说明:
Package | Description |
---|---|
org.apache.kafka.clients.admin | 提供用于对 Kafka 集群执行管理操作(如创建topic和配置代理)的 Kafka 客户端。 |
org.apache.kafka.clients.consumer | 提供用于从 Kafka 集群中的topic和/或分区消费记录的 Kafka 客户端。 |
org.apache.kafka.clients.producer | 提供用于向 Kafka 集群中的topic和/或分区生产记录的 Kafka 客户端。 |
org.apache.kafka.common | 提供 Kafka 客户端和服务器共享的功能。 |
org.apache.kafka.common.acl | 提供表示客户端授权访问控制列表的类。 |
org.apache.kafka.common.annotation | 提供用于 Kafka API 的注解。 |
org.apache.kafka.common.config | 提供用于定义、解析、验证和记录用户可配置参数的常见机制。 |
org.apache.kafka.common.config.provider | 提供可插拔的接口和一些用于延迟绑定配置值的实现。 |
org.apache.kafka.common.errors | 提供通用的异常类。 |
org.apache.kafka.common.header | 提供用于附加到 Kafka 记录的应用程序定义的元数据的 API。 |
org.apache.kafka.common.metrics | 提供 Kafka 客户端用来发出指标的 API,随后这些指标通过 *MetricsReporter 接口公开。 |
org.apache.kafka.common.metrics.stats | 提供用于统计汇总指标的方法。 |
org.apache.kafka.common.quota | 提供用于强制执行资源配额的机制。 |
org.apache.kafka.common.resource | 提供表示 Kafka 集群中逻辑资源的客户端句柄。 |
org.apache.kafka.common.security.auth | 提供用于实现 Kafka 认证机制的可插拔接口。 |
org.apache.kafka.common.security.oauthbearer | 提供用于在 Kafka 集群中使用 OAuth Bearer Token 认证的 LoginModule。 |
org.apache.kafka.common.security.oauthbearer.secured | 该包已被弃用。 |
org.apache.kafka.common.security.plain | 提供使用明文凭证进行 Kafka 集群安全认证的实现。 |
org.apache.kafka.common.security.scram | 提供使用加盐挑战响应认证机制(SCRAM)来确保 Kafka 集群安全的适配器。 |
org.apache.kafka.common.security.token.delegation | 提供用于将授权委托给特定 Principal 的机制,以确保 Kafka 集群安全。 |
org.apache.kafka.common.serialization | 提供用于对象序列化/反序列化的接口及一些实现。 |
org.apache.kafka.connect.components | 提供用于描述可插拔组件的通用接口。 |
org.apache.kafka.connect.connector | 提供用于 Connector 和 Task 实现的接口。 |
org.apache.kafka.connect.connector.policy | 提供可插拔接口,用于控制用户如何配置连接器的策略。 |
org.apache.kafka.connect.data | 提供用于表示 Connect 处理的数据和模式的类。 |
org.apache.kafka.connect.errors | 提供 Connect 的常见异常类,供框架和插件用于传达失败信息。 |
org.apache.kafka.connect.header | 提供用于附加到 Connect 记录的应用程序定义的元数据的 API。 |
org.apache.kafka.connect.health | 提供用于向 ConnectRestExtension 实例描述运行中 Connect 集群状态的 API。 |
org.apache.kafka.connect.mirror | - |
org.apache.kafka.connect.rest | 提供可插拔接口,用于更改 Connect REST API 的行为。 |
org.apache.kafka.connect.sink | 提供用于实现将 Kafka 记录写入外部应用程序的 sink 连接器的 API。 |
org.apache.kafka.connect.source | 提供用于实现从外部应用程序读取数据并将其导入 Kafka 的 source 连接器的 API。 |
org.apache.kafka.connect.storage | 提供用于(反)序列化数据到 Kafka 的可插拔接口及一些实现。 |
org.apache.kafka.connect.tools | - |
org.apache.kafka.connect.transforms | 提供用于更改 Connect 传输数据的可插拔接口。 |
org.apache.kafka.connect.transforms.predicates | 提供可插拔接口,用于描述何时应对记录应用转换。 |
org.apache.kafka.connect.util | 提供组件实现中可用的通用实用工具。 |
org.apache.kafka.coordinator.group.api.assignor | - |
org.apache.kafka.server.authorizer | 提供可插拔接口,用于在 Kafka 服务器上执行授权。 |
org.apache.kafka.server.log.remote.storage | 提供用于定义 Kafka 日志段的远程存储和检索的可插拔 API。 |
org.apache.kafka.server.policy | 提供用于表达topic和配置策略的可插拔接口。 |
org.apache.kafka.server.quota | 提供用于在 Kafka 服务器上执行客户端配额的可插拔接口。 |
org.apache.kafka.server.telemetry | 提供可插拔接口,用于捕获客户端的遥测指标。 |
org.apache.kafka.streams | 提供用于构建流数据应用程序的 Kafka Streams 库。 |
org.apache.kafka.streams.errors | 提供用于 Streams 应用程序的常见异常类。 |
org.apache.kafka.streams.kstream | 提供用于在输入流和表上表达(有状态的)数据流计算的高级编程模型(DSL)。 |
org.apache.kafka.streams.processor | 提供用于在输入topic上表达(有状态的)数据流计算的低级编程模型(Processor API,简称 PAPI)。 |
org.apache.kafka.streams.processor.api | 提供用于在输入topic上表达(有状态的)数据流计算的低级编程模型(Processor API,简称 PAPI)。 |
org.apache.kafka.streams.processor.assignment | - |
org.apache.kafka.streams.processor.assignment.assignors | - |
org.apache.kafka.streams.query | 提供用于在状态存储上查询(即交互式查询)的 API,用于从有状态的 Kafka Streams 应用程序中提取数据。 |
org.apache.kafka.streams.state | 提供用于管理有状态流应用程序中间状态的接口。 |
org.apache.kafka.streams.test | 提供用于使用模拟输入测试 Kafka Streams 应用程序的类。 |
org.apache.kafka.tools.api | 提供用于编写 Kafka 工具插件的接口。 |