5.0的定时消息,是不是就能实现任意精度的延迟消息啊?

5.0的定时消息,是不是就能实现任意精度的延迟消息啊?

展开
收起
滴滴滴~ 2023-03-06 16:46:40 1127 发布于辽宁 分享
分享
版权
举报
4 条回答
写回答
取消 提交回答
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    定时消息的精度会有 1s ~ 2s 的延迟误差。

    2023-03-07 08:49:07 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
  • 坚持这件事孤独又漫长。
    • RocketMQ 5.0之前的版本不支持准确的延迟消息,只能通过实现定时消息的方式进行近似的延迟,然而这种延迟方式无法进行任意精度的控制,准确度受到多种因素的影响,通常可能有几十秒的误差。

    • 在RocketMQ 5.0及以上版本中,RocketMQ支持准确的延迟消息。可以通过发送一个普通的消息,并设置这个消息的“延迟级别”(delay level),来指定这个消息需要被延迟的时间,最大支持的延迟时间可达29天,精度可达毫秒级别,精度和延迟时间是可配的。

    • 比如可以以RocketMQ Java SDK为例,创建一个消息对象,然后在消息属性中添加一个延迟级别,例如:

    Message message = new Message(
        "TopicTest",                        // topic
        "DelayTag",                         // tag
        "Hello RocketMQ delay message".getBytes()  // message body
    );
    // 设置 messageDelayTimeLevel 属性,此处表示10s的延迟
    message.putUserProperty(MessageConst.PROPERTY_DELAY_TIME_LEVEL, "3");
    

    延迟级别的值由具体业务需求进行配置和定义,它们通常以2的幂次方递增,比如:

    延迟级别延迟时间(秒)
    00
    11
    25
    310
    430
    ......
    • 因此,通过在消息中设置延迟级别,RocketMQ 5.0版本及以上的版本可以实现更为精度和准确的延迟消息。
    2023-03-06 20:26:07 举报
    赞同 1 评论

    评论

    全部评论 (0)

    登录后可评论
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    RocketMQ 5.X 定时消息引入了秒级的时间轮算法。注意,是秒级时间轮

    从源码来看,RocketMQ 5.X 定义了一个 7 天的以秒为单位的时间轮,注意刻度为1s,没有再细,比如 10ms、100ms之类的 。

    2023-03-06 17:58:55 举报
    赞同 1 评论

    评论

    全部评论 (0)

    登录后可评论
  • 3天内任意精度。此答案整理自钉群“群2-Apache RocketMQ 中国”

    2023-03-06 16:51:29 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

收录在圈子:
+ 订阅
阿里云 云原生应用平台 肩负阿里巴巴集团基础设施云化以及核心技术互联网化的重要职责,致力于打造稳定、标准、先进的云原生产品,成为云原生时代的引领者,推动行业全面想云原生的技术升级,成为阿里云新增长引擎。商业化产品包括容器、云原生中间件、函数计算等。
还有其他疑问?
咨询AI助理
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等