名称解释:
定时消息:可随意选择一个时间点来进行消息定时发送
延时消息:定时消息的子集,只能从提供的延时等级中选择
简介
背景和意义
使用场景:在分布式定时调度触发、任务超时处理等场景,需要实现精准、可靠的定时事件触发。使用 Apache RocketMQ 的定时消息可以简化定时调度任务的开发逻辑,实现高性能、可扩展、高可靠的定时触发能力。(来源-官网介绍)
在RocketMQ5之前,并没有定时消息这个功能,只有延时消息这个类似定时消息但又不太像定时消息的功能。其中设定的延时时间只能从提供的18个定时级别中选择。
RocketMQ在这个5.0这个大版本中全面拥抱云原生,在此场景下,也是支持了任意延迟时间的延迟消息功能。
定时消息概述
之前定时消息的实现方式
在RocketMQ5之前,还没提供定时消息的特性之前,我们想要实现定时消息只能借助定时任务来触发或者借用延时消息的同时使用一些奇技淫巧来间接的完成定时消息。
- 定时任务:根据第三方系统来定时的生产消息并触发消息的发送
- 奇技淫巧的延时消息:在RocketMQ的消息体中携带一个我们自定义的定时时间戳。一开始根据定时时间来选择最相近的延时等级,当消费者消费到这条消息后,判断当前时间与消息实际需要消费时间判断。如果不相等,重新获取相近的延时级别再次发送,一直这样循环下去。直到当前时间≤定时时间才真正的消费。
// 伪代码
void consumerMessage(Message message) {
long delayTimeStamp = message.getProperties("delayTimeStamp");
long currTimeStamp = System.

本文介绍了ApacheRocketMQ5.0中新增的定时消息功能,对比之前延时消息的复杂实现,新功能提供了更简单易用的API,提升了精度和开发效率,同时分析了其背后的实现原理和优势。
最低0.47元/天 解锁文章
867

被折叠的 条评论
为什么被折叠?



