Search in sources :

Example 1 with ElasticSimpleJob

use of com.dangdang.elasticjob.lite.annotation.ElasticSimpleJob in project LinkAgent by shulieTech.

the class JobExecutorFactoryGetJobExecutorInterceptor method processWithoutSpring.

private boolean processWithoutSpring(ShadowJob shadowJob) {
    boolean ok = false;
    Map<String, SimpleJob> map = PradarSpringUtil.getBeanFactory().getBeansOfType(SimpleJob.class);
    for (Map.Entry<String, SimpleJob> entry : map.entrySet()) {
        SimpleJob simpleJob = entry.getValue();
        if (!simpleJob.getClass().getName().equals(shadowJob.getClassName())) {
            continue;
        }
        ZookeeperRegistryCenter regCenter = getRegisterConter();
        Object originJob = simpleJob;
        ElasticSimpleJob elasticSimpleJobAnnotation = simpleJob.getClass().getAnnotation(ElasticSimpleJob.class);
        Class ptJobClass = PtElasticJobSimpleJob.class;
        String cron = StringUtils.defaultIfBlank(elasticSimpleJobAnnotation.cron(), elasticSimpleJobAnnotation.value());
        SimpleJobConfiguration simpleJobConfiguration = new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(ptJobClass.getName(), cron, elasticSimpleJobAnnotation.shardingTotalCount()).shardingItemParameters(elasticSimpleJobAnnotation.shardingItemParameters()).build(), simpleJob.getClass().getCanonicalName());
        LiteJobConfiguration liteJobConfiguration = LiteJobConfiguration.newBuilder(simpleJobConfiguration).overwrite(true).build();
        DefaultListableBeanFactory defaultListableBeanFactory = PradarSpringUtil.getBeanFactory();
        BeanDefinitionBuilder beanSimple = BeanDefinitionBuilder.rootBeanDefinition(ptJobClass);
        defaultListableBeanFactory.registerBeanDefinition(ptJobClass.getSimpleName() + originJob.getClass().getName(), beanSimple.getBeanDefinition());
        ElasticJob ptJob = (ElasticJob) PradarSpringUtil.getBeanFactory().getBean(ptJobClass.getSimpleName() + originJob.getClass().getName());
        String dataSourceRef = elasticSimpleJobAnnotation.dataSource();
        if (StringUtils.isNotBlank(dataSourceRef)) {
            if (!PradarSpringUtil.getBeanFactory().containsBean(dataSourceRef)) {
                throw new RuntimeException("not exist datasource [" + dataSourceRef + "] !");
            }
            DataSource dataSource = (DataSource) PradarSpringUtil.getBeanFactory().getBean(dataSourceRef);
            JobEventRdbConfiguration jobEventRdbConfiguration = new JobEventRdbConfiguration(dataSource);
            SpringJobScheduler jobScheduler = new SpringJobScheduler(ptJob, regCenter, liteJobConfiguration, jobEventRdbConfiguration);
            jobScheduler.init();
            if (originJob instanceof SimpleJob) {
                ((PtElasticJobSimpleJob) Reflect.on(jobScheduler).get("elasticJob")).setSimpleJob((SimpleJob) originJob);
            }
            ok = true;
            break;
        } else {
            SpringJobScheduler jobScheduler = new SpringJobScheduler(ptJob, regCenter, liteJobConfiguration);
            jobScheduler.init();
            if (originJob instanceof SimpleJob) {
                ((PtElasticJobSimpleJob) Reflect.on(jobScheduler).get("elasticJob")).setSimpleJob((SimpleJob) originJob);
            }
            ok = true;
            break;
        }
    }
    return ok;
}
Also used : PtElasticJobSimpleJob(com.pamirs.attach.plugin.shadowjob.obj.PtElasticJobSimpleJob) JobEventRdbConfiguration(com.dangdang.ddframe.job.event.rdb.JobEventRdbConfiguration) DefaultListableBeanFactory(org.springframework.beans.factory.support.DefaultListableBeanFactory) SimpleJobConfiguration(com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration) DataSource(javax.sql.DataSource) ZookeeperRegistryCenter(com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter) BeanDefinitionBuilder(org.springframework.beans.factory.support.BeanDefinitionBuilder) LiteJobConfiguration(com.dangdang.ddframe.job.lite.config.LiteJobConfiguration) ElasticJob(com.dangdang.ddframe.job.api.ElasticJob) SpringJobScheduler(com.dangdang.ddframe.job.lite.spring.api.SpringJobScheduler) PtElasticJobSimpleJob(com.pamirs.attach.plugin.shadowjob.obj.PtElasticJobSimpleJob) SimpleJob(com.dangdang.ddframe.job.api.simple.SimpleJob) ElasticSimpleJob(com.dangdang.elasticjob.lite.annotation.ElasticSimpleJob) ElasticSimpleJob(com.dangdang.elasticjob.lite.annotation.ElasticSimpleJob) Map(java.util.Map)

Aggregations

ElasticJob (com.dangdang.ddframe.job.api.ElasticJob)1 SimpleJob (com.dangdang.ddframe.job.api.simple.SimpleJob)1 SimpleJobConfiguration (com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration)1 JobEventRdbConfiguration (com.dangdang.ddframe.job.event.rdb.JobEventRdbConfiguration)1 LiteJobConfiguration (com.dangdang.ddframe.job.lite.config.LiteJobConfiguration)1 SpringJobScheduler (com.dangdang.ddframe.job.lite.spring.api.SpringJobScheduler)1 ZookeeperRegistryCenter (com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter)1 ElasticSimpleJob (com.dangdang.elasticjob.lite.annotation.ElasticSimpleJob)1 PtElasticJobSimpleJob (com.pamirs.attach.plugin.shadowjob.obj.PtElasticJobSimpleJob)1 Map (java.util.Map)1 DataSource (javax.sql.DataSource)1 BeanDefinitionBuilder (org.springframework.beans.factory.support.BeanDefinitionBuilder)1 DefaultListableBeanFactory (org.springframework.beans.factory.support.DefaultListableBeanFactory)1