RocketMQ5版本现在支持任意时间发送消息吗 支持的话 有没有时间范围限制?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
RocketMQ 5.x 版本支持定时消息和延时消息的发送,但存在时间范围限制。以下是详细说明:
标准版、Serverless标准版与专业版
专业版(包年包月、按量付费)和铂金版
msg.setStartDeliverTime
参数需要设置为当前时间戳之后的某个时刻(单位:毫秒)。在示例代码中,可以通过以下方式设置定时或延时时间:
// 设置延时时间为当前时间 + 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秒的延迟误差。 - 超时处理:若设置的时间超出限制,消息发送将失败。
请根据业务需求合理设置定时或延时时间,避免超出系统限制。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/