kafka流应用程序在重新启动后不使用数据

6qqygrtg  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(375)

在我重新启动kafka集群之后,我的kafka流应用程序没有收到来自输入主题的消息,我得到了一个 exception"can׳t create internal topic" . 经过一些研究,我用kafka工具(输入主题和应用程序)重置了工具 Kafka-streams-application-reset.sh .
不幸的是,它没有解决问题,我也得到了答案 exception 再一次

dfddblmv

dfddblmv1#

从错误消息中,可以推断主题已经存在,因此无法创建。失败的原因是,现有主题没有预期的分区数(它有1个而不是150个分区)--如果分区数匹配,kafka streams将只使用现有主题。
如果在代理中启用了主题自动创建(并且主题是使用错误的分区数创建的),或者输入主题的分区数发生了更改,则可能会发生这种情况。kafka streams不会自动更改重分区主题的分区数,因为这可能会导致数据损坏,从而导致不正确的结果。
解决此问题的一种方法是手动删除此主题:请注意,这可能会导致数据丢失,如果您知道这是您想要的,则应该这样做。
另一个更好的方法是,使用 bin/kafka-streams-application-reste.sh 结合 KafkaStreams#cleanup() .
因为您需要清理应用程序,而且用户应该意识到其中的含义,所以kafka streams无法让用户意识到问题,而不是“自动神奇地”采取一些从用户Angular 来看可能不需要的操作。
查看文档了解更多详细信息。还有一篇博客文章详细解释了应用程序重置:
https://kafka.apache.org/11/documentation/streams/developer-guide/app-reset-tool.html
https://www.confluent.io/blog/data-reprocessing-with-kafka-streams-resetting-a-streams-application/

相关问题