按实体删除KTable中的数据

时间:2019-11-20 14:52:04

标签: java apache-kafka-streams

我的任务是通过实体和引用删除KTable中的数据。我正在考虑使用逻辑删除技术在KTable中搜索给定的实体,并将这些值替换为null,Kafka将删除这些值。严格来说,这是针对QA测试环境的,因此他们可以使用相同的文档运行测试,而我的代码应允许他们每次运行测试时都能够在干净的环境中工作。这是我到目前为止的内容:

 public KTable<?, ?> deleteByEntity(StreamsBuilder streamsBuilder, Utils utils) {
        String inputTopic = utils.getProperty(ApplicationConfigs.ENRICHMENT_INPUT_TOPIC);
        KStream<String, GenericRecord> docStream = streamsBuilder.stream(inputTopic);
        docStream
                .peek((key, value) -> LOG.debug("incoming document: {} {}", key, value))
                //need to create flag field (do we specify, entity of value and not have as null, but entity of what we want to delete?
                .mapValues((key, value) -> {
                    if(key == /** entity?? */){
                       value = null;
 //                    value.setDelete = true;
                    }
                    return value;
                });

//            ADD MORE, aggregate data, check for delete flag, convert stream to table return table

所需的输出将是返回带有删除的实体的KTable。对这是否可行的做法有任何想法吗?朝正确方向推动或轻推将不胜感激。 编辑:我正在跟踪墓碑示例here,它是我认为的第四个代码块。

谢谢

0 个答案:

没有答案