kafka单条发送消息大小的设置方法

在kafka的默认配置中,默认单条消息最大为1M,当单条消息长度超过1M时,就会出现发送到broker失败,从而导致消息在producer的队列中一直累积,直到撑爆生产者的内存

当单条发送消息的大小超过1M,则会报一下错误

ERROR Error when sending message to topic testTopic with key: null, value: 2095476 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)org.apache.kafka.common.errors.RecordTooLargeException: The message is 2095510 bytes when serialized which is larger than the maximum request size you have configured with the max.request.size configuration.

主要修改以下几个地方来解决这个问题

修改kafka的broker配置:message.max.bytes(默认:1000000B),这个参数表示单条消息的最大长度。在使用kafka的时候,应该预估单条消息的最大长度,不然导致发送失败。
修改kafka的broker配置,server.properties中添加或者修改:

message.max.bytes=5242880(5M)
replica.fetch.max.bytes=6291456 //(6M)

每个分区试图获取的消息字节数。要大于等于message.max.bytes,否则broker会接收此消息,但无法将此消息复制出去,从而造成数据丢失。
修改生产者producer程序端配置,producer.properties中添加或者修改:

max.request.size = 5242880 //(5M)

请求的最大大小为字节。要小于 message.max.bytes
修改消费者consumer程序端配置,consumer.properties中添加或者修改:

fetch.message.max.bytes=6291456 //(6M)

每个提取请求中为每个主题分区提取的消息字节数。要大于等于message.max.bytes,如果不调节这个参数,就会导致消费者无法消费到消息,并且不会爆出异常或者警告,导致消息在broker中累积,此处要注意。


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/767.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。