加入Kafka Stream后从流中清除消息

时间:2019-01-28 16:21:49

标签: apache-kafka apache-kafka-streams

我正在使用Kafka Streams通过两个不同的Kafka主题,通过键来键入两种不同类型的消息。我正在使用Sliding time window。该窗口策略以一定数量的类型保留来自流的信息,该类型与消息是否加入某些内容无关。

在输入流的吞吐量非常高的情况下,由Kafka创建的用于执行连接的主题会非常迅速地增长,从而消耗大量的磁盘空间。

加入后是否有可能清除上述主题中的消息?这样,我将假定一条消息最多可以与另一条具有相同密钥的消息连接一次。

非常感谢。

2 个答案:

答案 0 :(得分:1)

您可以通过until()参数来减少保留时间:

stream1.join(stream2, JoinWindows.of(...).until(/*put retention time here*/);

指定的保留时间将用于本地存储以及基础变更日志主题。请注意,如果changelog主题已经存在,则更改until()更新主题配置-您需要手动更新主题配置。

答案 1 :(得分:-1)

0.11.0.0在AdminClient中引入了新的API deleteRecords和名为kafka-delete-records的脚本,可用于删除给定偏移量之前的所有记录。您可以使用它们清除不再需要的数据。

有关详细信息,请参见KIP-107