在RocketMQ中自定义延时消息时间,您需要遵循以下步骤操作,并注意相关细节:
定时精度:尽管RocketMQ支持毫秒级的定时时间设置,但默认精度为1秒。这意味着实际触发时间可能会有±1秒的误差。
定时范围:确保设置的延时时间在有效范围内,最大延时时间默认为24小时。
避免高峰:尽量避免大量消息设置为同一时刻投递,以免造成瞬时处理压力过大。此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”
定时时间设置原则
云消息队列 RocketMQ 版定时消息设置的定时时间是一个预期触发的系统时间戳,延时时间也需要转换成当前系统时间后的某一个时间戳,而不是一段延时时长。
定时时间的格式为毫秒级的Unix时间戳,您需要将要设置的时刻转换成时间戳形式。
定时时间必须设置在定时时长范围内,超过范围则定时不生效,服务端会立即投递消息。
定时消息最大定时时长:
包年包月、按量付费标准版,Serverless标准版与专业版最大支持7天。
包年包月、按量付费专业版,铂金版最大支持40天。
定时时间必须设置为当前时间之后,若设置到当前时间之前,则定时不生效,服务端会立即投递消息。
示例如下:
定时消息:例如,当前系统时间为2022-06-09 17:30:00,您希望消息在下午19:20:00定时投递,则定时时间为2022-06-09 19:20:00,转换成时间戳格式为1654773600000。
延时消息:例如,当前系统时间为2022-06-09 17:30:00,您希望延时1个小时后投递消息,则您需要根据当前时间和延时时长换算成定时时刻,即消息投递时间为2022-06-09 18:30:00,转换为时间戳格式为1654770600000。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/