目前在使用RocketMQ 4.5.2版本测试顺序消息场景时,发现启动之后立马发消息,客户端会有很大概率会有消费延迟,目前定位原因主要可能是 ConsumeMessageOrderlyService#lockMQPeriodically 对队列进行上锁,一开始本地没有分配到队列导致问题,具体代码和问题在: https://github.com/apache/rocketmq/discussions/7241 , 有哪位大佬可以帮忙解答一下吗?
RocketMQ 4.5.2版本中,顺序消息的消费延迟是正常的。因为顺序消息需要保证严格的顺序,所以消费者在消费消息之前,需要先从 broker 端拉取到之前的消息,然后才能消费当前的消息。这个过程会导致一定的延迟。
如果想要减少消费延迟,可以通过以下方法:
增加 broker 端的 messageDelayLevel 配置,这样可以让 broker 端缓存更多的消息。
增加消费者的 pullInterval 配置,这样可以让消费者更频繁地从 broker 端拉取消息。
使用 RocketMQ 的 批量消费 功能,这样可以一次拉取多个消息,减少消费者的请求次数。
另外,如果需要保证消息的严格顺序,可以使用 RocketMQ 的 顺序消费 功能。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/