赞
踩
前言:正在运行的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.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。