package com.ylm.config;
import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.dangdang.ddframe.job.config.JobCoreConfiguration;
import com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration;
import com.dangdang.ddframe.job.event.rdb.JobEventRdbConfiguration;
import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration;
import com.dangdang.ddframe.job.lite.spring.api.SpringJobScheduler;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperConfiguration;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter;
import com.ylm.annotation.ElasticSimpleJob;
import com.ylm.listner.ElasticJobListener;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.util.Map;
@Configuration
public class ElasticJobAutoConfiguration {
@Value("${elaticjob.zookeeper.server-lists}")
private String serverList;
@Value("${elaticjob.zookeeper.namespace}")
private String namespace;
@Value("${elaticjob.zookeeper.session-timeout-milliseconds}")
private int sessionTimeoutMilliseconds;
@Autowired
private ApplicationContext applicationContext;
@PostConstruct
public void initElasticJob(){
ZookeeperConfiguration config = new ZookeeperConfiguration(serverList, namespace);
config.setSessionTimeoutMilliseconds(sessionTimeoutMilliseconds);
ZookeeperRegistryCenter regCenter = new ZookeeperRegistryCenter(config);
regCenter.init();
Map<String, SimpleJob> map = applicationContext.getBeansOfType(SimpleJob.class);
for(Map.Entry<String, SimpleJob> entry : map.entrySet()){
SimpleJob simpleJob = entry.getValue();
ElasticSimpleJob elasticSimpleJobAnnotation=simpleJob.getClass().getAnnotation(ElasticSimpleJob.class);
String cron= StringUtils.defaultIfBlank(elasticSimpleJobAnnotation.cron(), elasticSimpleJobAnnotation.value());
SimpleJobConfiguration simpleJobConfiguration=new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(simpleJob.getClass().getName(), cron, elasticSimpleJobAnnotation.shardingTotalCount()).shardingItemParameters(elasticSimpleJobAnnotation.shardingItemParameters()).build(), simpleJob.getClass().getCanonicalName());
LiteJobConfiguration liteJobConfiguration=LiteJobConfiguration.newBuilder(simpleJobConfiguration).overwrite(true).build();
String dataSourceRef=elasticSimpleJobAnnotation.dataSource();
if(StringUtils.isNotBlank(dataSourceRef)){
if(!applicationContext.containsBean(dataSourceRef)){
throw new RuntimeException("not exist datasource ["+dataSourceRef+"] !");
}
DataSource dataSource=(DataSource)applicationContext.getBean(dataSourceRef);
JobEventRdbConfiguration jobEventRdbConfiguration=new JobEventRdbConfiguration(dataSource);
SpringJobScheduler jobScheduler=new SpringJobScheduler(simpleJob, regCenter, liteJobConfiguration,jobEventRdbConfiguration);
jobScheduler.init();
}else{
SpringJobScheduler jobScheduler=new SpringJobScheduler(simpleJob, regCenter, liteJobConfiguration);
jobScheduler.init();
}
}
}
/**
* 设置活动监听,前提是已经设置好了监听,见下一个目录
* @return
*/
@Bean
public ElasticJobListener elasticJobListener() {
return new ElasticJobListener(100, 100);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
elastic-job springboot集成源码
共8个文件
java:6个
xml:1个
yml:1个
3星 · 超过75%的资源 需积分: 50 39 下载量 65 浏览量
2019-01-11
14:53:52
上传
评论
收藏 8KB ZIP 举报
温馨提示
elastic-job springboot集成源码,已测试通过没有什么坑
资源推荐
资源详情
资源评论
收起资源包目录
elastic-job-test1.zip (8个子文件)
src
main
resources
application.yml 562B
java
com
ylm
ElasticJobServerApplication.java 333B
listner
ElasticJobListener.java 1KB
job
MyJob.java 2KB
config
ElasticJobAutoConfiguration.java 4KB
DataSourceConfig.java 835B
annotation
ElasticSimpleJob.java 969B
test
java
com
yzb
pom.xml 2KB
共 8 条
- 1
资源评论
- PasserBy*_*2019-05-17还行吧,现在还没有运行
陕西小伙伴网络科技有限公司
- 粉丝: 125
- 资源: 39
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功