Если выбрано исключение, весенняя партия не должна go до последнего метода - PullRequest
0 голосов
/ 05 мая 2020
@Configuration
public class BookStorePoliciesJobConfiguration {

    private static final String CRON_EXPRESSION_FOR_JOB = "0 0/10 * 1/1 * ? *";//change
    private static final String JOB_NAME = "bookStorePolicyJob";
    private static final String JOB_STEP_NAME = JOB_NAME + "Step";

    @Autowired
    private DataSource nonXAcrmDataSource;

    @Autowired
    private JtaTransactionManager transactionManager;

    @Bean
    public CanerScheduledJobFactoryBean bookStorePoliciesScheduledJob() {
        MafScheduledJobFactoryBean bean = new MafScheduledJobFactoryBean();
        bean.setBatchJobName(JOB_NAME);
        bean.setCronExp(CRON_EXPRESSION_FOR_JOB);
        bean.setNonXAcrmDataSource(this.nonXAcrmDataSource);
        return bean;
    }

    @Bean
    public Job bookStorePolicyJob(@Autowired BookStorePoliciesJobTasklet tasklet,
                                   @Autowired JobRepository batchJobRepository) {
        SimpleJob job = new SimpleJob(JOB_NAME);
        job.setSteps(Collections.singletonList(bookStorePolicyJobStep(tasklet, batchJobRepository)));
        job.setJobRepository(batchJobRepository);
        return job;
    }

    public Step bookStorePolicyJobStep(BookStoreJobTasklet tasklet, JobRepository batchJobRepository) {
        TaskletStep step = new TaskletStep(JOB_STEP_NAME);
        step.setTasklet(tasklet);
        step.setJobRepository(batchJobRepository);
        transactionManager.setAllowCustomIsolationLevels(true);
        step.setTransactionManager(transactionManager);
        return step;
    }
}

Это задание:

@Component
public class BookStoreJobTasklet extends CanerTasklet {

       @Override
        public RepeatStatus doExecute(StepContribution contribution, ChunkContext chunkContext) {

    ///
    //

    sendFileBySftp(fileName, file);//if this throws, should not go down line, should exit but it goes



            updateParameters();//if it is successfull only!
           return RepeatStatus.FINISHED;
        }

И метод:

  private void sendFileBySftp(String fileName, File file) {

//
//

try{

//
 } catch (JSchException | SftpException | IOException e) {
            logger.error("error in sendFileFTP {}", e.getMessage());//it comes here and continues. it should exit?
        } 

           logger.info("Session connection closed....");
        }

Что мне делать, чтобы остановить пакетирование?

я смотрю здесь Сделайте выход из весеннего пакетного задания с ненулевым кодом, если выбрано исключение

Должен ли я возвращать RepeatStatus для каждого метода, чтобы я мог проверить если не удалось?

Может быть, логическое значение и для каждого блока catch присвоить ему значение false?

...