使用RocketMQ报错defaultMQProducer send exception,详情如下:
Caused by: com.aliyun.openservices.ons.api.exception.ONSClientException: defaultMQProducer send exception
at com.aliyun.openservices.ons.api.impl.rocketmq.ProducerImpl.checkProducerException(ProducerImpl.java:315)
at com.aliyun.openservices.ons.api.impl.rocketmq.ProducerImpl.send(ProducerImpl.java:165)
at io.terminus.common.rocketmq.producer.ONSProducer.doSend(ONSProducer.java:44)
... 123 common frames omitted
Caused by: com.aliyun.openservices.shade.com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 215 DESC: ClusterName rocketmq-proxy-rmq-cn-pe33fy7x905 send topic TRADING messages flow control, flow limit threshold is 1000, remainMs 8
For more information, please visit the url, http://rocketmq.apache.org/docs/faq/
使用的是ONS,其实就是RocketMQ的商业版。
主要关注下面这一段就行:
flow limit threshold is 1000, remainMs 8
RocketMQ发生了限流。
商业版ONS解决
举例:限制的阀值为1000TPS
解释:阿里这里的限流限的不是某一个topic,而是整个实例。
第一种方法:
阀值为1000,那么收发消息总的为2000,如果对于消息时效性不是特别强的话,可以将发消息调大一些,消费消息小一些。
第二种方法:
没啥可说的,只能加钱
私有RocketMQ
调整配置即可。