专栏名称: 微观技术
前阿里技术专家,拿过 鹅厂、百度、华为 等6家大厂offer,博客专家,出过专利。负责过电商交易、社区团购、流量营销等业务
目录
今天看啥  ›  专栏  ›  微观技术

订单支付超时如何处理?盘点延迟任务的11种实现方式,你知道几种?

微观技术  · 公众号  · 算法 科技自媒体  · 2024-07-02 08:06
    

主要观点总结

本文介绍了11种实现延迟任务的方法,包括JDK提供的DelayQueue、Timer、ScheduledThreadPoolExecutor,以及消息中间件如RocketMQ、RabbitMQ、Redis、Redisson和Netty的HashedWheelTimer,还有Hutool的SystemTimer和Quartz。每种方法都有相应的示例代码和原理解释,同时也给出了对于各种实现方式的比较和优缺点分析。

关键观点总结

关键观点1: JDK提供的DelayQueue、Timer、ScheduledThreadPoolExecutor实现

JDK提供了几种基于内建的API实现延迟任务的方法,如DelayQueue、Timer和ScheduledThreadPoolExecutor。这些实现方式各有特点,如DelayQueue是JDK提供的api,Timer使用单线程来处理任务,ScheduledThreadPoolExecutor解决了单线程和异常崩溃等问题。

关键观点2: 消息中间件如RocketMQ、RabbitMQ、Redis、Redisson和Netty的HashedWheelTimer实现

消息中间件如RocketMQ、RabbitMQ、Redis、Redisson和Netty的HashedWheelTimer也提供了实现延迟任务的功能。这些实现方式通过消息队列或定时任务的方式实现,如RocketMQ通过指定延迟等级来实现,RabbitMQ通过死信队列或延时插件,Redis通过监听过期key,Redisson通过RDelayedQueue,Netty的HashedWheelTimer和Hutool的SystemTimer也提供了类似的功能。

关键观点3: Quartz实现

Quartz是一款开源作业调度框架,基于其API也可以实现延迟任务的功能。Quartz通过创建Job和Trigger来注册任务和定时器,启动调度器后,会根据Trigger的设定来调度任务的执行。

关键观点4: 无限轮询延迟任务实现

无限轮询是一种简单的实现延迟任务的方法,通过开启一个线程不停地轮询任务,当任务到达了延迟时间,就执行任务。这种方法虽然操作简单,但是效率低下,每次都得遍历所有的任务。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照