近日,在使用rocketmq本地做生产和消费时,发现消费者消费很慢,按正常的流程是生产者程序和消费者程序同时监听,在生产者生产消息过后,消费者程序第一时间会消费,然而出现消费者消费很慢不能马上消费到消息,检查程序也没有发现程序有什么异常问题。于是猜测可能是rocketmq的问题,查看rocketmq的日志发现,果然里面有报错。
2024-06-13 09:41:44.784 ERROR [18816] [RebalanceService] [o.a.r.c.i.c.RebalanceImpl#?:?] - allocate message queue exception. strategy name: AVG, ex: {}
java.lang.NoClassDefFoundError: org/apache/commons/collections/CollectionUtils
at org.apache.rocketmq.client.consumer.rebalance.AbstractAllocateMessageQueueStrategy.check(AbstractAllocateMessageQueueStrategy.java:37)
at org.apache.rocketmq.client.consumer.rebalance.AllocateMessageQueueAveragely.allocate(AllocateMessageQueueAveragely.java:33)
at org.apache.rocketmq.client.impl.consumer.RebalanceImpl.rebalanceByTopic(RebalanceImpl.java:343)
at org.apache.rocketmq.client.impl.consumer.RebalanceImpl.doRebalance(RebalanceImpl.java:247)
at org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl.doRebalance(DefaultMQPushConsumerImpl.java:1362)
at org.apache.rocketmq.client.impl.factory.MQClientInstance.doRebalance(MQClientInstance.java:979)
at org.apache.rocketmq.client.impl.consumer.RebalanceService.run(RebalanceService.java:41)
at java.lang.Thread.run(Thread.java:748)
看报错是有出现:org/apache/commons/collections/CollectionUtils,看来是缺少某个包导致的,经过搜索查询。在xml文件上面添加依赖就可以了。
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
发现程序没有引用的这个包的,估计是rocketmq的有需要引用,猜测还是版本的问题导致,不管怎么说,解决就好了。分析问题还是要好好的看日志啊!