当我尝试通过Kafka制作人进行发布时
在Spring Boot应用程序中,出现RecordTooLargeException
错误。
错误是:
org.apache.kafka.common.errors.RecordTooLargeException:序列化时,消息为1235934字节,大于您使用max.request.size配置配置的最大请求大小。
我阅读了有关此问题的其他讨论,但没有对此提供任何适当的支持,因为我还必须发布以及使用来自客户端的消息。
请通过简短的配置步骤来帮助我。
答案 0 :(得分:0)
关于Kafka的妙处在于,它具有出色的异常消息,几乎可以自我解释。基本上是说您的信息太大(我相信您是自己总结得出的)。
如果您在表中的docs for producer config搜索中搜索max.request.size
以获得解释,则会显示:
请求的最大大小(以字节为单位)。此设置将限制 生产者将在单个请求中发送给的记录批数 避免发送大量请求。这实际上也是对 最大记录批次大小。请注意,服务器具有自己的上限 记录可能与此不同的批次大小。
您可以在生产者配置中配置此值,如下所示:
properties.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, "value-in-bytes");
但是,对于90%的用例,默认值非常好。如果您可以避免发送这么大的消息,或者尝试压缩消息(这在讨论吞吐量时会很奇怪),例如:
properties.setProperty(ProducerConfig.COMPRESSION_TYPE_CONFIG, "snappy");
还有2种其他压缩类型,但是这种压缩类型来自Google,效率很高。除了压缩,您还可以调整其他两个值以获得更好的性能(batch.size
和linger.ms
),但是您必须测试用例。