Kafka Streams 项目教程
1. 项目的目录结构及介绍
Kafka Streams 项目的目录结构如下:
kafka-streams/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ ├── example/
│ │ │ │ │ ├── KafkaStreamsApp.java
│ │ │ │ │ ├── StreamsConfig.java
│ │ │ │ │ └── ...
│ │ │ └── ...
│ │ └── resources/
│ │ ├── application.properties
│ │ └── ...
│ └── test/
│ └── ...
├── pom.xml
└── README.md
目录结构介绍
src/main/java/
: 包含项目的所有 Java 源代码。com/example/
: 示例代码的主要包。KafkaStreamsApp.java
: 项目的启动文件。StreamsConfig.java
: 项目的配置文件。
src/main/resources/
: 包含项目的资源文件,如配置文件等。application.properties
: 项目的配置文件。
src/test/
: 包含项目的测试代码。pom.xml
: Maven 项目的配置文件。README.md
: 项目的说明文档。
2. 项目的启动文件介绍
KafkaStreamsApp.java
KafkaStreamsApp.java
是项目的启动文件,主要负责初始化 Kafka Streams 应用程序并启动它。以下是该文件的主要内容:
package com.example;
import org.apache.kafka.streams.KafkaStreams;
import org.apache.kafka.streams.StreamsBuilder;
import org.apache.kafka.streams.kstream.KStream;
import org.apache.kafka.streams.kstream.KTable;
import org.apache.kafka.streams.kstream.Materialized;
import org.apache.kafka.streams.kstream.Produced;
import java.util.Properties;
public class KafkaStreamsApp {
public static void main(String[] args) {
// 创建 StreamsBuilder
StreamsBuilder builder = new StreamsBuilder();
// 定义输入流
KStream<String, String> source = builder.stream("input-topic");
// 定义处理逻辑
KTable<String, Long> counts = source
.filter((key, value) -> value != null && !value.isEmpty())
.groupBy((key, value) -> value)
.count(Materialized.as("count-store"));
// 定义输出流
counts.toStream().to("output-topic", Produced.with(Serdes.String(), Serdes.Long()));
// 创建 KafkaStreams 实例
KafkaStreams streams = new KafkaStreams(builder.build(), StreamsConfig.getStreamsConfig());
// 启动 KafkaStreams 应用程序
streams.start();
// 注册关闭钩子
Runtime.getRuntime().addShutdownHook(new Thread(streams::close));
}
}
启动文件介绍
StreamsBuilder
: 用于构建 Kafka Streams 应用程序的拓扑结构。KStream
: 表示一个无界的、持续更新的数据流。KTable
: 表示一个无界的、持续更新的数据表。KafkaStreams
: 负责启动和管理 Kafka Streams 应用程序。
3. 项目的配置文件介绍
application.properties
application.properties
是项目的配置文件,包含 Kafka Streams 应用程序的配置参数。以下是该文件的主要内容:
bootstrap.servers=localhost:9092
application.id=kafka-streams-app
replication.factor=1
input.topic.name=input-topic
output.topic.name=output-topic
配置文件介绍
bootstrap.servers
: Kafka 集群的地址。application.id
: Kafka Streams 应用程序的唯一标识。replication.factor
: 主题的副本因子。input.topic.name
: 输入主题的名称。output.topic.name
: 输出主题的名称。
以上是 Kafka Streams 项目的目录结构、启动文件和配置文件的介绍