2017-12-18 14 views
2

스프링 배치 데이터 프로젝트를 봄 구름 데이터 흐름에 구성하려고합니다. SCDF에 등록 할 수 있지만 작업 실행 중입니다. 다음은 구성 파일입니다.스프링 배치 용 스프링 데이터 흐름 구성 방법

@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); 
} 
} 

그리고 이것은

@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(); 
} 

이 사람이 내가 그것을 제대로 구성하는 데 도움이 될 수 있습니다

내 배치 confriguration 파일 또는 나는 또한 봄 부팅 관리자하지만 그것으로 시도 내가 을 내 일괄 처리 작업을 모니터링 할 수있는 다른 방법이 SBA에서 자바 구성을 지원하지 않는 것은 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 Cloud Data Flow의 태스크.

+0

그 예를 시도했지만 작업 구성 클래스가 작동하지 않습니다. – sourabh

+0

귀하의 경우에 작동하지 않는 부분에 대해 자세히 설명해 주시겠습니까? stacktrace 또는 실패와 같은 공유 할 정보가 있습니까? –