RocketMQ5版本现在支持任意时间发送消息吗 支持的话 有没有时间范围限制?

RocketMQ5版本现在支持任意时间发送消息吗 支持的话 有没有时间范围限制?

展开
收起
真的很搞笑 2024-04-05 08:06:35 62 分享 版权
阿里云 AI 助理回答

RocketMQ 5.x 版本支持定时消息和延时消息的发送,但存在时间范围限制。以下是详细说明:

定时消息的时间范围限制

  1. 标准版、Serverless标准版与专业版

    • 最大支持 7天 的定时消息。
  2. 专业版(包年包月、按量付费)和铂金版

    • 最大支持 40天 的定时消息。

延时消息的时间范围限制

  • 延时消息的 msg.setStartDeliverTime 参数需要设置为当前时间戳之后的某个时刻(单位:毫秒)。
  • 延时消息的最大延时时长同样受限于上述时间范围,即最长不超过 40天

注意事项

  • 如果设置的定时或延时时间超过最大限制(如40天),消息发送将失败。
  • 定时精度 存在 1~2秒的延迟误差,因此无法保证消息在精确的毫秒级时间点投递。
  • 若消费者端存在消息堆积,定时或延时消息可能会排在堆积消息之后,导致实际投递时间晚于预期。

示例代码中的时间设置

在示例代码中,可以通过以下方式设置定时或延时时间:

// 设置延时时间为当前时间 + 3秒
long delayTime = System.currentTimeMillis() + 3000;
msg.putUserProperty("__STARTDELIVERTIME", String.valueOf(delayTime));

或者设置具体的定时时间:

// 设置定时时间为指定时间点,例如 "2023-10-01 12:00:00"
long timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2023-10-01 12:00:00").getTime();
msg.putUserProperty("__STARTDELIVERTIME", String.valueOf(timeStamp));

总结

RocketMQ 5.x 版本支持任意时间发送定时或延时消息,但需满足以下条件: - 时间范围限制:标准版最大支持7天,专业版和铂金版最大支持40天。 - 精度限制:存在1~2秒的延迟误差。 - 超时处理:若设置的时间超出限制,消息发送将失败。

请根据业务需求合理设置定时或延时时间,避免超出系统限制。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/

还有其他疑问?
咨询AI助理