首页 理论教育 简单任务配置与执行方式

简单任务配置与执行方式

时间:2023-11-22 理论教育 版权反馈
【摘要】:使用简单任务只需要配置此任务的总体分片规则和时间调度规则,然后实现任务的配置类,最后在真正执行任务逻辑的类中继承SimpleJob接口类,并且实现其execute方法,这样就完成了简单任务的全部工作。时间及分片设置在yml文件中添加如下信息:使用此配置,设定任务总体分片数为3,每个小时执行一次定时任务。

简单任务配置与执行方式

使用简单任务只需要配置此任务的总体分片规则和时间调度规则,然后实现任务的配置类,最后在真正执行任务逻辑的类中继承SimpleJob接口类,并且实现其execute方法,这样就完成了简单任务的全部工作。

(1)时间及分片设置

在yml文件中添加如下信息:

使用此配置,设定任务总体分片数为3,每个小时执行一次定时任务。

(2)添加配置类

此类根据之前设置的配置项和新创建的定时任务对象启动调度执行。

(3)定义定时任务执行逻辑

此类是真正定时任务执行业务逻辑的地方,在execute方法中打印了总分片数和当前分片数,并且使用数据操作类OrderDao获取即将支付超时的用户id。

(4)基于当前分片数的数据处理

在OrderDaoImpl类中添加如下方法,此方法接收两个参数:总分片数和当前分片数,然后根据这两个参数进行数据查询,获取用户id。

(5)自定义mapper

自定义Mapper类映射的接口方法为

public List<Long>getUnpaidUser(Map<Object,Object>map);(www.xing528.com)

此语句的目的是查询userid对总分片数取模等于此任务的分片值的即将到期未支付订单的userid。

(6)运行情况演示

运行一个定时任务实例,当达到时间规则时,可以看到如下输出:

SpringSimpleJob------Thread ID:51,任务总片数:3,当前分片项:2

SpringSimpleJob------Thread ID:50,任务总片数:3,当前分片项:1

SpringSimpleJob------Thread ID:49,任务总片数:3,当前分片项:0

SpringSimpleJob:50 cur=1 list is[7,10,1,4,37]

SpringSimpleJob:49 cur=0 list is[6,3,33,12,9,15,18]

SpringSimpleJob:51 cur=2 list is[2,5,8,23,11,98,17]

由上面的输出可见,返回的userid对3取模等于它的分片数,即各个分片根据研发者定义的逻辑,处理自己分片相应的数据内容。

如果再启动一个任务实例,那么新启动的实例就会分担全部分片中某些分片的任务,这样就实现了横向扩展的目的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈