前几天因为下游服务消费的逻辑问题,导致宕机,大量消息堆积在了MQ中,且服务一重启就立马宕机。为了快速恢复服务,我们修改了代码逻辑,接到消息打印日志后就直接丢弃,后续定位到问题再重置消费位点。
这时我又思考另一问题,如果消费逻辑没有问题,只是生产者生产信息过快,那对于RocketMQ单纯的增加消费机器能解决问题吗?
RocketMQ消费者负载均衡
阿里云官方文档:https://help.aliyun.com/zh/apsaramq-for-rocketmq/cloud-message-queue-rocketmq-5-x-series/developer-reference/load-balancing-policies-for-consumers?spm=a2c4g.11186623.0.0.3876182feee0He
首先,我们知道RocketMQ Topic下是有一个或多个queue,消息最终其实其实是投递到queue当中,能不能通过增加机器来提高消费速度就需要了解消费者负载均衡策略
消息粒度负载均衡
消息粒度负载均衡策略中,同一消费者分组内的多个消费者将按照消息粒度平均分摊主题中的所有消息,即同一个队列中的消息,可被平均分配给多个消费者共同消费。
消息粒度的负载均衡机制,是基于内部的单条消息确认语义实现的。消费者获取某条消息后,服务端会将