Kafka - 代理:消息大小太大

man*_*ger 11 apache-kafka kafka-producer-api

我得到Message size too large的例外,当我尝试发送邮件是超过1个MB的大小。当我尝试生成消息时,错误出现在我的客户端应用程序中。经过一番谷歌搜索后,我发现应该更改设置以增加最大消息大小。嗯,我在/kafka/config/server.properties文件中做到了。我添加了接下来的 2 个设置:

message.max.bytes=15728640
replica.fetch.max.bytes=15728640
Run Code Online (Sandbox Code Playgroud)

另外,我添加fetch.message.max.bytes=15728640/kafka/config/consumer.properties文件中。所有其他设置保持默认。

我重新启动了 kafka 服务器,但仍然出现相同的错误。

PS Kafka 版本是 1.1.0。

sun*_*007 11

您有正确的配置,但是您还需要在生产者端设置 max.request.size

props.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 15728640);

max.request.size请求的最大大小(以字节为单位)。此设置将限制生产者将在单个请求中发送的记录批次数,以避免发送大量请求。这实际上也是最大记录批量大小的上限。

在 Broker 方面,您已经配置了以下应该可以工作的参数

message.max.bytes Kafka 允许的最大记录批量大小。

replica.fetch.max.bytes尝试为每个分区获取的消息字节数。如果提取的第一个非空分区中的第一批记录大于此值,则这不是绝对最大值,仍将返回记录批以确保可以取得进展。代理接受的最大记录批量大小是通过 message.max.bytes(代理配置)或 max.message.bytes(主题配置)定义的。

在主题端 max.message.bytes 如果您已经在代理端设置了 message.max.bytes,则不需要

max.message.bytes - 这是代理允许附加到主题的最大消息大小。这个大小是经过验证的预压缩。(默认为经纪人的 message.max.bytes。)

参考 https://kafka.apache.org/documentation/

  • 在客户端为生产者设置 message.max.bytes 是有技巧的。谢谢你,先生! (2认同)