首先,kafka不支持定时/延时消息功能,rocketMQ是支持的

详细参考:技术选型:RocketMQ or Kafka

rocketMQ的定时/延时消息使用

发送定时消息需要明确指定消息发送时间点之后的某一时间点作为消息投递的时间点。
发送延时消息时需要设定一个延时时间长度,消息将从当前发送时间点开始延迟固定时间之后才开始投递。

详细参考:阿里云文档的定时和延时消息

对kafka的定时/延时消息改进

可以使用小顶堆的结构对到期时间进行管理:

轮训堆顶元素,如果到达触发时间则发送本元素,然后进行堆调整, 再比较新堆顶...

图片摘自(仅做个人备份,浏览请看原文):简易实现kafka延迟消息

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐