java延时等待_延时队列

da87f3d7f2866619c7200a0c1efa5cac.gif

为什么有这个项目?

    有些场景下需要在一定时间后执行某个任务。例如:

    1. 生成订单30分钟未支付,则自动取消

    2. 生成订单60秒后,给用户发短信

    目前比较流行的开源消息队列,都没有能够直接支持任意精度延时消息的,比如rocketmq只支持特定等级的延时任务,rabbitmq也需要为不同延时时间的任务设置单独的死信队列。在调研了很多方案之后,有了这个基于rocketmq实现的延时消息服务。

//

延时服务问题点

1. 排序 

2. 消息存储

• 支持任意延迟意味着消息需要在服务端进行排序。服务器需要保证延时低的消息被先发送出去,MQ的消息都是保证发送的顺序,根据延时时间重排序会极其消耗性能。

• 常见的消息队列的消息存储基本都是按顺序存储的,并且消息保存时间有限制,如rocketmq消息文件默认超过3天没有更新就会被删除。要支持任意精度的时间需要长时间保存,对服务器磁盘大小也有很大压力。

• 方案: hash wheel timer

功能介绍 

该服务的主要功能:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值