# RabbitMQ max_message_size = 134217728 # Kafka message.max.bytes=10485760 replica.fetch.max.bytes=10485760
消息 800KB 时发送正常,涨到 2MB 之后 broker 直接拒收,日志里只有一句 message size exceeded。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,多数消息队列默认的单条上限就是 1MB,大消息还会占满页缓存和网络带宽,整体吞吐被单独几条大包拖住。
这次卡住的地方就在「消息体过大」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。
处理上按这个顺序:先压到 1MB 以内 只传主键和变更字段;大对象放对象存储 消息体里只带地址和校验值;确实要传大包 再评估一下调大上限的连带代价。
改完只确认一件事:单条消息的平均体积降到百 KB 级,发送失败数归零。
