RocketMQ 5.0 无状态实时性消费详解
原文中文,约3800字,阅读约需9分钟。发表于: 。SimpleConsumer 客户端采用了无状态的 pop 机制,彻底解决了在客户端发布消息、上下线时可能出现的负载均衡问题。然而,这种新机制也带来了一个新的挑战:当客户端数量较少且消息数量较少时,可能会出现消息消费延时的情况。
RocketMQ 5.0引入了SimpleConsumer客户端类型,通过无状态的弹出机制解决了负载均衡问题。然而,当客户端和消息都很少时,这种机制可能导致消息消费延迟。RocketMQ的当前长轮询机制在与代理模块一起使用时存在问题。客户端的长轮询和代理的长轮询耦合在一起,当客户端少而多个Broker可用时会出现问题。为了解决这个问题,提出了一种名为“带通知的弹出”(pop with notify)的新解决方案,它将客户端的长轮询与Broker的长轮询解耦,并允许代理优先选择具有消息的Broker。该解决方案设计简单可靠,并考虑了自适应切换到传统长轮询的情况。使用指标来监控长轮询的性能和成本。Apache RocketMQ中的最小长轮询超时设置为5秒。总体而言,该解决方案提供了实时消费,同时减少了不必要的请求和网络开销。