我正在研究kafka-streams api。基本上,Kafka-stream从源主题获取数据,并在应用了一些过滤器后将其写回到目标kafka主题。
使用的依赖项。 :
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>2.1.0</version>
</dependency>
下面的是相同代码。 :
{ ...
// create property
Properties property = new Properties();
property.setProperty(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG,"127.0.0.1:9092");
property.setProperty(StreamsConfig.APPLICATION_ID_CONFIG,"kafka_streams_app");
property.setProperty(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.StringSerde.class.getName());
property.setProperty(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.StringSerde.class.getName());
//create topology
StreamsBuilder streamsBuilder = new StreamsBuilder();
//build topology
KStream<String,String> inputTopic = streamsBuilder.stream("source_topic");
//filtering data
KStream<String,String> filteredStream = inputTopic.filter(
(k,val)-> filterData(val)>10000
);
filteredStream.to("target_topic");
KafkaStreams streams = new KafkaStreams(
streamsBuilder.build(),
property
);
//start our stream app
streams.start();
...
}
这是我的应用程序体系结构:
producer API(在源主题中产生)=>
kafka-stream API(从源主题读取并将数据发送到目标主题) => kafka-消费者api(来自目标主题)
我想要的是,当流将数据写入target topic
时,无论事件是否成功,我都想捕获事件。
有什么方法可以捕获该回调?谢谢
答案 0 :(得分:0)
您可以在普通生产者API上发送时指定的生产者回调
Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback);
未在Streams API中公开。