我有一个运行Kafka库0.11(运行在Kafka 2上的集群)的Kafka Streams应用程序,该状态库在转换链的末尾使用状态存储进行.aggregate()
调用。
监视应用程序时,我注意到状态存储中有一些条目超过了max.message.bytes=1000012
的群集默认配置,压缩被禁用,我可以确认对其进行了一些测试。
此外,我使用-changelog
直接从kafkacat
主题检索了消息,并确认其中确实存储了高达3.6 MiB的消息。
我创建了一个本地测试环境,启动了一个Kafka 0.11容器(正好与我正在使用的库的版本匹配),并让它在运行负载测试时运行,以将状态存储填满到相同的大小就像我从生产环境中得到的一样。
我现在正在运行的另一个测试用例正在尝试填充状态存储,直到Kafka向我抛出org.apache.kafka.common.errors.RecordTooLargeException
为止,但到目前为止我还没有达到,不幸的是,似乎开发的代码开始得到支持处理数千个条目后处理记录的速度非常慢,我将尝试创建一个测试用例,在其中我将更多数据转储到状态存储中,直到我看到该异常发生为止,但此刻我仍然让测试用例完成。
说了这么多,我的问题是:当状态存储更新org.apache.kafka.common.errors.RecordTooLargeException
主题中的记录时,如果没有Kafka抛出-changelog
怎么办?