Kafka Streams集成Spring Cloud Stream内部主题无法释放数据咨询
Kafka Streams内部重分区主题持续扩容问题
我在集成Spring Cloud Stream的Kafka Streams应用中遇到异常:名为ApplicationId-MergeUndoMyObject-KSTREAM-KEY-SELECT-0000000003-repartition的内部重分区主题持续扩容,始终不释放数据,其retention.ms配置为-1。
该重分区主题由以下代码生成:
@Bean public BiFunction<KStream<String, Undo>, KStream<String, MyObjectUpdate>, KStream<String, UndoMyObject>> mergeUndoWithMyObjectUpdate() { return (undo, myObjectUpdate) -> undo.selectKey((k, v) -> v.getMyObjectDesignator()) .join(myObjectUpdate.selectKey((k, v) -> (v.getMyObject() == null ? null : v.getMyObject().getDesignator())), this::execute, JoinWindows.of(Duration.ofSeconds(3)), StreamJoined.with(Serdes.String(), new JsonSerde<>(Undo.class), new JsonSerde<>(MyObjectUpdate.class))) .filterNot((k, v) -> v == null) .map((k, v) -> new KeyValue<>(v.getUndo().getId(), v)) .peek((k, v) -> { log.debug("Merged Undo with MyObjectUpdate -> {}, {}", v.getUndo().getId(), v.getAfterMyObject().getId()); if (repository.getByKey(v.getUndo().getId()).isEmpty()) { undoStompController.send(v.getUndo().getId(), v.getChanges(), v.getUndo().getSessionId()); } } ); }
我最初尝试直接修改该内部主题的retention配置,但发现它并未使用集群默认配置,在AKHQ中被标记为DYNAMIC_TOPIC_CONFIG。查阅相关资料后得知,不建议直接修改这类内部主题的配置,应让Kafka自行处理数据留存。
我希望得到以下问题的解答:
- 为何该主题消息数显示为0,却仍然不释放占用的存储空间?
- 是否建议手动设置该内部主题的retention配置?
附AKHQ中该主题的信息说明:
- 主题详情截图:显示主题的基础配置,其中
retention.ms值为-1,配置类型为动态配置 - 主题统计截图:显示主题当前消息数为0,但存储空间仍有占用
恳请提供该Kafka Streams问题的排查思路与解决方案,感谢任何补充信息或建议。
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

