Kafka Streams /减少和记录保留

时间:2018-11-08 15:00:55

标签: apache-kafka apache-kafka-streams

我对日志保留和Kafka Streams减少操作有疑问...

我具有以下流配置...

builder.
 .stream("topic1", Comsumed.with(Serdes.string(), Serdes.string()))
 .groupByKey(Serialized.with(Serdes.string(), Serdes.string()))
.reduce((val1, val2) -> val2, Materialzed.as("store1"))

我知道墓碑事件没有达到reduce函数,所以我必须使用特殊的对象来表示删除,但是如果日志保留删除了一条消息,它将如何工作,如何将其传输到MaterializedView?

1 个答案:

答案 0 :(得分:1)

如果您以流形式阅读主题,并且日志保留将主题截断,则您将无法获得有关此信息的通知。

  

个人说明:我认为您正在做的是反模式。而您遇到的问题就是对此的一个指示。

从主题获取“删除”事件的唯一方法是,如果您使用压缩的主题并将其读取为KTable。删除仅通过KTable会接收并对其进行相应处理的墓碑发生。