深度探索RocketMQ5:定时消息新特性解析【上】

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

名称解释:
定时消息:可随意选择一个时间点来进行消息定时发送
延时消息:定时消息的子集,只能从提供的延时等级中选择

简介

背景和意义

使用场景:在分布式定时调度触发、任务超时处理等场景,需要实现精准、可靠的定时事件触发。使用 Apache RocketMQ 的定时消息可以简化定时调度任务的开发逻辑,实现高性能、可扩展、高可靠的定时触发能力。(来源-官网介绍
RocketMQ5之前,并没有定时消息这个功能,只有延时消息这个类似定时消息但又不太像定时消息的功能。其中设定的延时时间只能从提供的18个定时级别中选择。
Apache RocketMQ 支持的延时级别
RocketMQ在这个5.0这个大版本中全面拥抱云原生,在此场景下,也是支持了任意延迟时间的延迟消息功能。

定时消息概述

之前定时消息的实现方式

在RocketMQ5之前,还没提供定时消息的特性之前,我们想要实现定时消息只能借助定时任务来触发或者借用延时消息的同时使用一些奇技淫巧来间接的完成定时消息。

  • 定时任务:根据第三方系统来定时的生产消息并触发消息的发送
  • 奇技淫巧的延时消息:在RocketMQ的消息体中携带一个我们自定义的定时时间戳。一开始根据定时时间来选择最相近的延时等级,当消费者消费到这条消息后,判断当前时间与消息实际需要消费时间判断。如果不相等,重新获取相近的延时级别再次发送,一直这样循环下去。直到当前时间≤定时时间才真正的消费。
// 伪代码
void consumerMessage(Message message) {
   
   
    long delayTimeStamp = message.getProperties("delayTimeStamp");
    long currTimeStamp = System.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值