分片定时任务开发指南

更新时间:2015/09/18 访问次数:15593

介绍

分片定时任务可以把数据的收集和数据的处理分成两个阶段来处理,第一阶段为要处理的数据收集的阶段,每批收集不超过2000条数据,这个数据string的形式表示,返回后我们负责保存到数据库中,一直调用收集方法(take),直到收集方法的中的结束标识设置为true。收集阶段结束后进入数据处理阶段,每次以出2000条给任务的处理方法(run)来处理这些数据,直到所有数据处理处理完成,任务结束。

开发方式

以maven工程为例,

第一步,依赖我们的SDK

<groupId>com.alibaba.appengine</groupId>

<artifactId>services-jae-api</artifactId>

<version>1.0.4-SNAPSHOT</version>

第?步,自己写的任务处理类extends AbstractShardingTask进行开发自己的任务:其中args[] = {“参数”,null,null,FireTime}, 由于之前args[1]和args[2]是提供给其它任务类型使用的,对于分片任务是null,args[0]对于take方法是告诉用户收集到第几批了从0开始,args[0]对于run方法是本批需要处理的数据的json格式。

例如:

public class MyShardingTask extends AbstractShardingTask {

@Override

public ShardingSet take(String[] args) {

。。。。。。

ShardingSet set = new ShardingSet(finished);//这个finished表?示这一批数据收集完后是否就结束了,如果没有没结束还需要收集下一批数据就设置成false,如果这已经是最后一批则True

set.add("a”);//这?里?面每次放进去的数据不能超过2000个,超过2000个就直接抛异常了

set.add("b");

set.add("c”);

set.

return set;

}

@Override

public String run(String[] args) {

。。。。。。

return "OK";

}

}

 

第三步,配置该类到项目中的改文件 main/resources/META-INF/services/

com.alibaba.appengine.jae.api.task.AbstractShardingTask

文件内容就写你那个类的全路径,例如:

com.xxx.yyy.MyShardingTask

 

第四步,打包

打包的时候要把自己类和依赖的jar全部打出来,把所有这些jar打成一个zip

例如maven的这个插件可以把所有依赖的jar也打出来

<build>

 <plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-dependency-plugin</artifactId>

<version>2.4</version>

<executions>

<execution>

<id>copy-dependencies</id>

<phase>package</phase>

 <goals>

<goal>copy-dependencies</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

用这个插件打完包后,target目录下面就有你自己的jar和你依赖的那些jar了,把这些jar全部打到一个zip文件中就可以上传了。

关于日志

配置文件中的Apender要使用我们提供的appender才可以打到用户日志中,例如:

# This is the configuring for logging displayed in the Application Server

log4j.rootLogger = INFO,logAppender

#ace4j log appender

log4j.appender.logAppender=com.alibaba.appengine.api.log.appender.LogAppender

log4j.appender.logAppender.layout=org.apache.log4j.PatternLayout

log4j.appender.logAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}%-5p[%-c]%m%n

log4j.appender.logAppender.Threshold=INFO

约束

数据收集阶段每次放到ShardingTask中的数据不要太大,可以放一些索引之类的数据方便数据处理

阶段能找到数据就可以了。

FAQ

关于此文档暂时还没有FAQ
返回
顶部