我正在使用Kafka Streams通过两个不同的Kafka主题,通过键来键入两种不同类型的消息。我正在使用Sliding time window。该窗口策略以一定数量的类型保留来自流的信息,该类型与消息是否加入某些内容无关。
在输入流的吞吐量非常高的情况下,由Kafka创建的用于执行连接的主题会非常迅速地增长,从而消耗大量的磁盘空间。
加入后是否有可能清除上述主题中的消息?这样,我将假定一条消息最多可以与另一条具有相同密钥的消息连接一次。
非常感谢。
答案 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。