如何根据数据库存储的时间及时的执行相关的方法?

现在有一个任务执行表

id 任务类型 订单号 执行时间 执行状态 执行的类名
1 order 123 时间戳 是否执行状态 执行类

这种怎么去实现在指定的时间去执行相关的任务呀?

目前想到的做法是,定时任务定时的扫描表(总会有差值),然后判断时间差。将时间差在20分钟内的(这个值只是乱定义的)任务通过一个消息队列(目前使用的是amq),延迟发送给消费者执行

考虑:如果全用延迟消息队列,目前还不知道怎么持久化消息。只有数据库去存这些任务,但怎么去将这些数据库存的任务,及时的发送给消费者消费,还没有解决办法

阅读 2.3k
1 个回答

一种可行的方案是使用zookeeper。
当你插入一条记录时,在zookeeper中创建一个节点,并设置超时时间(自己算好执行时间跟当前时间的时间差),然后对该节点设置watcher。当超时时间一过,watcher中会收到通知,此时执行你想要执行的方法就行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题