我的任务是通过实体和引用删除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,它是我认为的第四个代码块。
谢谢