springboot配置Elastic-Job示例

加入maven依赖包
 

<!-- 引入elastic-job-lite核心模块 -->
		<dependency>
			<groupId>com.dangdang</groupId>
			<artifactId>elastic-job-lite-core</artifactId>
			<version>2.1.5</version>
		</dependency>

		<!-- 使用springframework自定义命名空间时引入 -->
		<dependency>
			<groupId>com.dangdang</groupId>
			<artifactId>elastic-job-lite-spring</artifactId>
			<version>2.1.5</version>
		</dependency>

1.配置properties

zookeeper.serverList=xxx.xxx.xxx.xxx:8060,xxx.xxx.xxx.xxx:8060,xxx.xxx.xxx.xxx:8060
zookeeper.namespace.elasticJob=elastic-job-lite-springboot
elasticJob.cron.myjob=0/5 * * * * ?
elasticJob.shardingTotalCount.myjob=2
elasticJob.shardingItemParameters.myjob=0=p0,1=p1

2.ZookeeperConfig

@Configuration
@ConditionalOnExpression("'${regCenter.serverListt}'.length() > 0")
public class ZookeeperConfig {

	@Value("${zookeeper.serverList}")
	private String serverList;
	@Value("${zookeeper.namespace.elasticJob}")
	private String namespace;

	@Bean
	public ZookeeperConfiguration zkConfig() {
		return new ZookeeperConfiguration(serverList, namespace);
	}

	@Bean(initMethod = "init", destroyMethod = "close")
	public ZookeeperRegistryCenter regCenter(ZookeeperConfiguration config) {
		return new ZookeeperRegistryCenter(config);
	}
}

3.新建示例JOB

@Component
public class MyElasticJob implements SimpleJob {

	@Override
	public void execute(ShardingContext context) {
		System.out.println(String.format("------Thread ID: %s, 任务总片数: %s, "
						+ "当前分片项: %s.当前参数: %s,"
						+ "当前任务名称: %s.当前任务参数: %s",
				Thread.currentThread().getId(),
				context.getShardingTotalCount(),
				context.getShardingItem(),
				context.getShardingParameter(),
				context.getJobName(),
				context.getJobParameter()));
		switch (context.getShardingItem()) {
			case 0:
				System.out.println("do something by sharding item 0");
				break;
			case 1:
				System.out.println("do something by sharding item 1");
				break;
			case 2:
				System.out.println("do something by sharding item 2");
				break;
			default:
				break;
		}
	}
}

4.ElasticJobConfig

@Configuration
public class ElasticJobConfig {

	@Autowired
	private ZookeeperRegistryCenter regCenter;

	@Autowired
	private  MyElasticJob myElasticJob;

	//定时任务的cron表达式
	@Value("${elasticJob.cron.myjob}")
	private String cron;
	//为任务的分片数量(即同时同时开几个定时任务)
	@Value("${elasticJob.shardingTotalCount.myjob}")
	private int shardingTotalCount;
	//为任务分片携带的参数
	@Value("${elasticJob.shardingItemParameters.myjob}")
	private String shardingItemParameters;

	public ElasticJobConfig() {
	}

	@Bean(initMethod = "init")
	public JobScheduler simpleJobScheduler() {
		LiteJobConfiguration liteJobConfiguration
				= getLiteJobConfiguration(myElasticJob.getClass(), cron, shardingTotalCount, shardingItemParameters);
		JobScheduler jobScheduler
				= new SpringJobScheduler(myElasticJob, regCenter, liteJobConfiguration);
		return jobScheduler;
	}

	/**
	 *@Description  任务配置类
	 */
	private LiteJobConfiguration getLiteJobConfiguration(final Class<? extends SimpleJob> jobClass,
			final String cron,
			final int shardingTotalCount,
			final String shardingItemParameters){
		JobCoreConfiguration jobCoreConfiguration = JobCoreConfiguration.newBuilder(
						jobClass.getName(), cron, shardingTotalCount)
						.shardingItemParameters(shardingItemParameters)
						.build();
		SimpleJobConfiguration simpleJobConfiguration = new SimpleJobConfiguration(jobCoreConfiguration,jobClass.getCanonicalName());
		return LiteJobConfiguration.newBuilder(simpleJobConfiguration).overwrite(true).build();

	}
}

5.启动springboot,JOB即可执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值