Kafka Streams:当Kafka Streams将数据写入目标主题时,如何捕获事件

时间:2019-01-26 11:23:05

标签: apache-kafka apache-kafka-streams

我正在研究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时,无论事件是否成功,我都想捕获事件。

有什么方法可以捕获该回调?谢谢

1 个答案:

答案 0 :(得分:0)

您可以在普通生产者API上发送时指定的生产者回调

Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback);

未在Streams API中公开。