Как запланировать весеннее пакетное задание для перезапуска приложения - PullRequest
0 голосов
/ 04 мая 2020

У меня есть метод, который я написал внутри конструктора.
Когда я планирую пакетное задание Spring Этот метод не вызывается через указанный c интервал времени.
Только он вызывается во время Spring Запуск пакетного приложения.
Может кто-нибудь подсказать какую-либо логи c, как я могу запланировать Spring Batch приложение, которое будет перезапускать мое приложение через определенный c интервал времени.

    private int nextULPIndex;
    private List<Data> finalULPData;

        public JsonItemReaderFromULProspector() {
            ULProspectorAPICall.runShellScript();
            logger.info("API call to ULProspector successfully executed inside JsonItemReaderFromULProspector");
            logger.info("Inside Constructor of JsonItemReaderFromULProspector");
            initialize();
        }

        private void initialize() {

            List<Data> ulpData = ReadJSONFromULP.getJsonObject();
            logger.info("initialize() Started");

            finalULPData = Collections.unmodifiableList(ulpData);
            nextULPIndex = 0;

        }

finalULPData вызывается внутри метода run () класса ItemReader

Я не могу вызвать initialize () внутри run (), потому что метод run () вызывается неоднократно в зависимости от размера чанка.

public class JsonItemReaderFromULProspector implements ItemReader<Data> {
@Override
    public Data read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {

        Data nextULPData = null;
        logger.info("read() method JsonItemReaderFromULProspector class :Start");
        if (nextULPIndex < finalULPData.size()) {
            nextULPData = finalULPData.get(nextULPIndex);

            nextULPIndex++;
        }

        return nextULPData;
    }
}

Этот класс вызывается из класса BatchConfig, как показано ниже.

    @StepScope
    @Lazy
    ItemReader<Data> reader() {
        return new JsonItemReaderFromULProspector();

    }

    @Bean
    @Lazy
    public Step step1() throws Exception {
        return stepBuilderFactory.get("step1").<Data, ULPData>chunk(10).reader(reader()).processor(ulProspectorDataProcessor()).writer(ulpDataWriter.jsonFileDatabaseItemWriter()).build();
    }

    @Bean
    public Job job() throws Exception {
        return this.jobBuilderFactory.get("job").incrementer(new RunIdIncrementer())
                .start(callUlPApiStep())
                .next(deleteRecordsFromTableStep())
                .next(step1()).build();}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...