Java注解实现elastic-job定时任务
时间: 2023-08-03 21:33:57 浏览: 158
Java工具:定时任务工具Elastic-job的简单使用
使用注解实现Elastic-Job定时任务可以让任务配置更加简洁和灵活,以下是一个简单的示例代码:
1. 引入Elastic-Job依赖
```xml
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-spring</artifactId>
<version>2.1.5</version>
</dependency>
```
2. 定义任务实现类
```java
@JobHandler(value = "myJob")
@Component
public class MyJob implements SimpleJob {
@Override
public void execute(ShardingContext shardingContext) {
System.out.println("分片项:" + shardingContext.getShardingItem() + ",总分片数:" + shardingContext.getShardingTotalCount());
// TODO: 执行具体的任务逻辑
}
}
```
在上面的示例中,我们使用@JobHandler注解定义了任务名称,并将任务实现类MyJob标记为Spring组件。
3. 配置任务
```java
@Configuration
public class JobConfig {
@Autowired
private ZookeeperRegistryCenter registryCenter;
@Bean(initMethod = "init")
public JobScheduler simpleJobScheduler(final MyJob myJob, @Value("${myJob.cron}") final String cron,
@Value("${myJob.shardingTotalCount}") final int shardingTotalCount,
@Value("${myJob.shardingItemParameters}") final String shardingItemParameters) {
return new SpringJobScheduler(myJob, registryCenter, getLiteJobConfiguration(myJob.getClass(), cron, shardingTotalCount, shardingItemParameters));
}
private LiteJobConfiguration getLiteJobConfiguration(final Class<? extends SimpleJob> jobClass, final String cron, final int shardingTotalCount, final String shardingItemParameters) {
return LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(
jobClass.getName(), cron, shardingTotalCount)
.shardingItemParameters(shardingItemParameters)
.build(), jobClass.getCanonicalName())).overwrite(true).build();
}
}
```
在上面的示例中,我们使用@Configuration注解定义了任务配置类,并注入了ZookeeperRegistryCenter对象。然后定义了simpleJobScheduler方法,使用@Bean注解标记为Spring组件,并将MyJob实例和任务配置信息作为参数传入。
在getLiteJobConfiguration方法中,我们使用JobCoreConfiguration和SimpleJobConfiguration两个类实现任务的基本配置,然后使用LiteJobConfiguration进行总配置,并使用overwrite方法将原有任务配置覆盖。最后,在simpleJobScheduler方法中,使用SpringJobScheduler类启动任务。
4. 配置文件
在配置文件中,我们可以指定任务的cron表达式、分片数量和分片项参数等信息,例如:
```properties
myJob.cron=0/5 * * * * ?
myJob.shardingTotalCount=3
myJob.shardingItemParameters=0=A,1=B,2=C
```
这样,就可以使用Java注解实现Elastic-Job定时任务功能,让任务配置更加简单和灵活。
阅读全文