5.3 Kafka Streams API之算子演示
原创
©著作权归作者所有:来自51CTO博客作者wx63560c7d74933的原创作品,请联系作者获取转载授权,否则将追究法律责任
1.代码示例
public class StreamSample {
private static final String TOPIC_INPUT = "steven-stream-in";
private static final String TOPIC_OUT = "steven-stream-out";
public static void main(String[] args) {
//Stream配置
Properties props = new Properties();
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordCount");
props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
//构建流结构拓扑
final StreamsBuilder builder = new StreamsBuilder();
//构建流计算过程
foreachStream(builder);
final KafkaStreams streams = new KafkaStreams(builder.build(), props);
streams.start();
}
/**
* 构建流计算过程
*
* @param builder
*/
static void foreachStream(final StreamsBuilder builder) {
KStream<String, String> source = builder.stream(TOPIC_INPUT);
source.flatMapValues(value -> Arrays.asList(value.toLowerCase(Locale.getDefault()).split(" ")))
.foreach((key, value) -> System.out.println(key + ":" + value));
}
}
2.代码运行结果
(1).创建生产者
打开一个cmd终端,在E:\Kafka\kafka_2.12-1.1.0\bin\windows目录下执行kafka-console-producer.bat --broker-list localhost:9092 --topic steven-stream-in命令,创建生产者。
kafka-console-producer.bat --broker-list localhost:9092 --topic steven-stream-in
(2).创建消费者
打开一个cmd终端,在E:\Kafka\kafka_2.12-1.1.0\bin\windows目录下执行kafka-console-consumer.bat --zookeeper localhost:2181 --topic steven-stream-out命令,创建消费者。
kafka-console-consumer.bat --zookeeper localhost:2181 --topic steven-stream-out
--property print.key=true --property print.value=true
--property key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
--property value.deserializer=org.apache.kafka.common.serialization.LongDeserializer
(3).生产者命令框中输入数据
I am Chinese
I am American
I am from China
(4).控制台查看分析结果
null:I
null:am
null:Chinese
null:I
null:am
null:American
null:I
null:am
null:from
null:China