2017-12-18 424 views
2

春天数据流我有春天一批项目,我想在春天的云数据流我为能够将其注册在新加坡民防部队,但在发射任务我的作业没有运行, 以下配置它是我的配置文件如何配置Spring Batch的

@SpringBootApplication 
@EnableBatchProcessing 
@EnableTask 
public class BatchApplication { 
/*@Autowired 
BatchCommandLineRunner batchcommdrunner; 

@Bean 
public CommandLineRunner commandLineRunner() { 
    System.out.println("Executed at :" + new SimpleDateFormat().format(new Date())); 
    return batchcommdrunner ; 
}*/ 

public static void main(String[] args) { 
    SpringApplication.run(BatchApplication.class, args); 
} 
} 

这是我的批处理confriguration文件

@Configuration 
public class BatchConfiguaration { 

@Autowired 
private DataSource datasouce; 

@Autowired 
private JobBuilderFactory jobBuilderFactory; 

@Autowired 
private StepBuilderFactory stepBuilderFactory; 

@Autowired 
public Environment env; 

@Bean(name = "reader") 
@StepScope 
public ItemReader<Schedules> reader(@Value("#{stepExecutionContext[scheduleRecs]}") List<Schedules> scherecs) { 
    ItemReader<Schedules> reader = new IteratorItemReader<Schedules>(scherecs); 
    return reader; 
} 

@Bean(name = "CWSreader") 
@StepScope 
public ItemReader<Contents> CWSreader(@Value("#{stepExecutionContext[scheduleRecs]}") List<Contents> scherecs) { 
    ItemReader<Contents> reader = new IteratorItemReader<Contents>(scherecs); 
    return reader; 
} 

@SuppressWarnings("rawtypes") 
@Bean 
@StepScope 
public BatchProcessor processor() { 
    return new BatchProcessor(); 
} 

@Bean(name = "batchSchedulePreparedStatement") 
@StepScope 
public BatchSchedulePreparedStatement batchSchedulePreparedStatement() { 
    return new BatchSchedulePreparedStatement(); 
} 


@SuppressWarnings({ "rawtypes", "unchecked" }) 
@Bean(name = "batchWriter") 
@StepScope 
public BatchWriter batchWriter() { 
    BatchWriter batchWriter = new BatchWriter(); 
    batchWriter.setDataSource(datasouce); 
    batchWriter.setSql(env.getProperty("batch.insert.schedule.query")); 
    batchWriter.setItemPreparedStatementSetter(batchSchedulePreparedStatement()); 
    return batchWriter; 

} 


@Bean("acheronDbTm") 
@Qualifier("acheronDbTm") 
public PlatformTransactionManager platformTransactionManager() { 
    return new ResourcelessTransactionManager(); 
} 

@Bean 
public JobExplorer jobExplorer() throws Exception { 
    MapJobExplorerFactoryBean explorerFactoryBean = new MapJobExplorerFactoryBean(); 
    explorerFactoryBean.setRepositoryFactory(mapJobRepositoryFactoryBean()); 
    explorerFactoryBean.afterPropertiesSet(); 
    return explorerFactoryBean.getObject(); 
} 

@Bean 
public MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean() { 
    MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean = new MapJobRepositoryFactoryBean(); 
    mapJobRepositoryFactoryBean.setTransactionManager(platformTransactionManager()); 
    return mapJobRepositoryFactoryBean; 
} 

@Bean 
public JobRepository jobRepository() throws Exception { 
    return mapJobRepositoryFactoryBean().getObject(); 
} 

@Bean 
public SimpleJobLauncher jobLauncher() throws Exception { 
    SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); 
    jobLauncher.setJobRepository(jobRepository()); 
    return jobLauncher; 
} 

@Bean(name = "batchPartition") 
@StepScope 
public BatchPartition batchPartition() { 
    BatchPartition batchPartition = new BatchPartition(); 
    return batchPartition; 
} 



@Bean(name="taskExecutor") 
public TaskExecutor taskExecutor() { 
    ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor(); 
    poolTaskExecutor.setCorePoolSize(10); 
    poolTaskExecutor.setMaxPoolSize(30); 
    poolTaskExecutor.setQueueCapacity(35); 
    poolTaskExecutor.setThreadNamePrefix("Acheron"); 
    poolTaskExecutor.afterPropertiesSet(); 
    return poolTaskExecutor; 
} 

@Bean(name = "masterStep") 
public Step masterStep() { 
    return stepBuilderFactory.get("masterStep").partitioner(slave()).partitioner("slave", batchPartition()) 
      .taskExecutor(taskExecutor()).build(); 
} 


@Bean(name = "slave") 
public Step slave() { 
    return stepBuilderFactory.get("slave").chunk(100).faultTolerant().retryLimit(2) 
      .retry(DeadlockLoserDataAccessException.class).reader(reader(null)).processor(processor()) 
      .writer(batchWriter()).build(); 

} 


@Bean(name = "manageStagingScheduleMaster") 
public Job manageStagingScheduleMaster(final Step masterStep) throws Exception { 
    return jobBuilderFactory.get("manageStagingScheduleMaster").preventRestart().incrementer(new RunIdIncrementer()) 
      .start(masterStep).build(); 
} 

谁能帮助我正确的配置它或者是有任何其他方式在那里我可以监视我的批处理作业 我也试图与春天开机管理员,但它在SBA是不支持Java的配置是有什么办法可以在XML中添加作业,而作业

我launcing从控制器这份工作

JobParametersBuilder builder = new JobParametersBuilder(); 
    System.out.println("Job Builder " + builder); 
    JobParameters jobParameters = builder.toJobParameters(); 
    JobExecution execution = jobLauncher.run(job, jobParameters); 
    return execution.getStatus().toString(); 

回答

0

sample显示可以推出作为一个基本的春天批处理应用程序Spring云数据流中的任务。

+0

我尝试过这个例子,但它不能与我的作业配置类 – sourabh

+0

一起工作你能详细说明什么不适用于你的情况吗?你有任何信息(如堆栈跟踪或失败)分享吗? –