延时任务机制详细说明及一些类图分享

后台-系统设置-扩展变量-手机广告位-内容正文顶部

  我们在开发时,经常会遇到一些延时任务的需求。那么下面易族智汇javashop就为您详细说一下延时任务机制,欢迎阅读参考。

延时任务机制说明

架构说明

  •   延时任务:指定某日期执行某自定义任务
  •   思路为采用Rabbitmq中的死信转移队列的技术点实现。
  •   第一步向一个队列(具有xxxx属性)发送消息,这个队列的消息可以指定失效时间
  •   当失效发生时rabbbitmq会将此消息转移到另外的一个普通对列中,此时立刻被消费了,以此实现任务的延迟执行。

AMQP延时任务核心类图

  •   TimeTrigger触发器接口,对外提供定义延迟任务的接口,调用者直接面向此接口。
  •   目前只实现了基于RabbitMq的实现,如果有其他延时任务实现(如基于redis),面向此接口开发即可,定义新增、编辑、删除任务操作。
  •   RabbitmqTimeTrigger
  •   基于rabbitmq延时任务实现
  •   TimeTriggerConfig,rabbitmq配置
  •   TimeTriggerMsg,rabbitmq延时任务消息

执行器类图

  •   TimeTriggerConsumer延时任务消费者,负责延时任务的调用
  •   TimeTriggerExecuter延时任务执行器接口,自定义延时任务需要实现此接口
  •   PintuanTimeTriggerExecuter以拼团业务为例,延时任务执行的实现。

新增任务时序图

  步骤说明:

  1、新增延时任务,指定延时任务所需的参数(执行器beanName,执行器参数,执行日期,执行任务标识KEY)

  2、rabbitmq发送消息,将执行器以及参数封装

  3、写入redis,标识任务需要执行

  4、mq监听指定时间任务

  5、消费者获取redis的任务标识

  7、进行标识判断,如果判断无效,则不执行任务,return

  8、如果任务标识有效,则通过springbean容器获取执行器,执行execute方法

编辑任务流程图

  步骤说明:

  1、编辑延时任务,指定延时任务所需的参数(执行器,执行器参数,执行日期,执行任务标识KEY)

  2、删除redis中的任务标识,代表任务取消

  3、rabbitmq发送消息,将执行器以及参数封装

  4、写入redis,标识任务需要执行

  5、mq监听指定时间任务

  7、消费者获取redis的任务标识

  8、进行标识判断,如果判断无效,则不执行任务,return

  9、如果任务标识有效,则通过springbean容器获取执行器,执行execute方法

删除任务流程图

  步骤说明:

  1、删除延时任务,参数(执行任务标识KEY)

  2、删除redis中的任务标识,代表任务取消

  根据以上内容可以了解到关于延时任务机制的说明,想了解更多详情,可以持续关注易族智汇javashop

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

后台-系统设置-扩展变量-手机广告位-内容正文底部
留言与评论(共有 0 条评论)
   
验证码: