RocketMq报错:the message is illegal, maybe msg body or properties length not matched

前言:正在运行的RocketMq报错了,显示的全部错误信息为如下:

org.apache.rocketmq.client.exception.MQBrokerException: CODE: 13  DESC: the message is illegal, maybe msg body or properties length not matched. msg body length limit 128k, msg properties length limit 32k.For more information, please visit the url, http://rocketmq.apache.org/docs/faq/

为了解决此问题,我采取了三种方法,最终第三种方法解决了问题,需要问题解决的直接看第三种就行了

一. 百度

百度了半天只看见默认普通消息为4M,没看见什么确切的解决方法,还被误导了,下面这个官方链接说上面的报错是属性过大,还让我思考了半天我属性哪里过大了,没啥用,列在这里,以后再来看看

https://developer.aliyun.com/article/770355?spm=a2c6h.12873622.0.0.65372d03mTv8ms

这个我认为是错的,列在这里,以后再来看看

【问题原因】:

这个报错是因为优化后端集群节点的时候导致的报错。对使用是没有影响的哈, 只是日志会有异常记录下来。

也可以再观察下,如果是持续大量报错,并且消息会发送失败,需要提供实例 id/ 地域 /topic 等信息给到技术人员进行查看。 消息体太大导致发送失败

【问题描述】:

发送消息的时候报错:

CODE:13 the message is illegal, maybe msg body or properties length not matched. msg bodylength limit 128k, msg properties length limit 32k. 此异常为消息属性 properties 太大。 

CODE:13 the message body size over max value, MAX:4194304。 此异常信息为消息 body 太大

【解决方案】:

消息体大小最大为 4MB, 一般建议发送的消息体在 4kb 之内 ( 性能最佳 )。
消息属性最大为 32kb,一般建议发送的消息属性在 1kb 之内 ( 性能最佳 )。
4MB 这个上限值不能修改,这个会影响全局性能。如果消息体的确很大,建 议侧优化消息体的内容,避免发送大消息或者带有链接地址的消息,或者可 以缩短或者分两条发送。

二. 在程序中修改

于是我看到在生产者中可以配置最大消息大小

producer.setMaxMessageSize(4194304);

本来想试试,但是看到默认的消息就是4M,于是感觉没用就没有试

public DefaultMQProducer(String producerGroup, RPCHook rpcHook) {
        this.createTopicKey = "TBW102";
        this.defaultTopicQueueNums = 4;
        this.sendMsgTimeout = 3000;
        this.compressMsgBodyOverHowmuch = 4096;
        this.retryTimesWhenSendFailed = 2;
        this.retryTimesWhenSendAsyncFailed = 2;
        this.retryAnotherBrokerWhenNotStoreOK = false;
        this.maxMessageSize = 4194304;//默认大小
        this.producerGroup = producerGroup;
        this.defaultMQProducerImpl = new DefaultMQProducerImpl(this, rpcHook);
    }

 

三. 在broker配置文件中修改

最后我想到了是不是该去配置文件中调试一下,于是我打开了我的broker配置文件,发现了问题,当初部署rocketmq的时候为了图方便,直接在网上复制的别人的配置,结果那个人的配置中消息最大为128k。

broker配置文件在conf文件夹中,我这里用的2m-noslave模式,broker配置文件的位置在/conf/2m-noslave/broker-a.properties,默认应该就是/conf/broker.conf

下图是配置文件中已经调整过的大小

最终我修改了broker配置文件中最大消息大小,然后重启就成功了,打开官方的监测网站,可以看到broker消息最大为4M.

 

 

 

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值