当我尝试发送超过1 Mb大小的消息时,出现Message size too large
异常。当我尝试生成消息时,该错误出现在我的客户端应用程序中。经过一番谷歌搜索后,我发现应该更改设置以增加最大邮件大小。好吧,我在/kafka/config/server.properties
文件中做到了。我添加了下2个设置:
message.max.bytes=15728640
replica.fetch.max.bytes=15728640
我也将fetch.message.max.bytes=15728640
添加到了/kafka/config/consumer.properties
文件中。所有其他设置保持默认。
我没有重启kafka服务器,但是仍然出现相同的错误。
PS Kafka版本为1.1.0。
答案 0 :(得分:1)
您的配置正确,但是还需要在生产者端设置 max.request.siz 。
props.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 15728640);
最大请求大小(以字节为单位)。此设置将限制生产者将发送的记录批数 避免在发送单个请求时发出大量请求。这实际上是最大记录批量的上限。
在Broker端,您已经配置了以下应该起作用的参数
message.max.bytes (最大邮件字节数)
replica.fetch.max.bytes 尝试为每个分区获取的消息的字节数。这不是绝对最大值,如果 提取的第一个非空分区中的第一个记录批处理是 大于此值,记录批仍将返回到 确保可以取得进展。最大记录批量大小 代理接受的消息是通过message.max.bytes(broker 配置)或max.message.bytes(主题配置)。
在主题方面,如果您已经在代理方设置了message.max.bytes,则不需要此字段。
最大消息字节数-这是代理的最大消息大小 将允许附加到主题。此大小已验证 预压缩。 (默认为经纪人的message.max.bytes。)