解决kafka传输超大图片消费者接收失败问题

记录一下今天解决kafka传输超大图片消费者接收失败问题的过程及收获
项目中需要将实时帧用kafka进行传输,原来帧格式化后的分辨率设置为640x480,大小约为50kb,因后期处理需要更高的分辨率,所以将图片设置为1440x1080,大小约为400kb,结果发现消费者接收不到图片或图片损坏重叠花屏显示。报如下错误:

org.apache.kafka.common.errors.RecordTooLargeException: There are some messages at [Partition=Offset]: {cam1-0=99} whose size is larger than the fetch size 1048576 and hence cannot be ever returned. Increase the fetch size on the client (using max.partition.fetch.bytes), or decrease the maximum message size the broker will allow (using message.max.bytes).

原因是kafka默认的参数已经满足不了项目的需求,需要对kafka进行需要调参,
接下来将对本次涉及到的几个kafka参数进行解释

producer 配置:

  • max.request.size = 5242880 (5M)
    请求的最大大小为字节。要小于 message.max.bytes默认值1M,我这里设置的5M

broker 配置:

  • message.max.bytes=5242880(5M)
    broker能接收消息的最大字节数,这个值应该比消费端的fetch.message.max.bytes更小才对,否则broker就会因为消费端无法使用这个消息而挂起,默认值10000000,我这里设置为5M。
  • replica.fetch.max.bytes=6291456(6M)
    broker可复制的消息的最大字节数(每个分区试图获取的消息字节数)。这个值应该比message.max.bytes大,否则broker会接收此消息,但无法将此消息复制出去,从而造成数据丢失。默认值1M,我这里设置为6M。

Consumer 配置:

  • fetch.message.max.bytes=6291456(6M)
    消费者能读取的最大消息。这个值应该大于或等于message.max.bytes。
    默认值1M,我这里设置为6M。

调完这几个参数,重启kafka server,就可以正常传输高分辨率的图片了,但是传输效率确实比原来要降低一些,至于如何平衡功能和效率,后面我还需要慢慢摸索找到最合适的参数方案。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值