Метаданные рабочих заданий Spring Batch Persist - PullRequest
0 голосов
/ 27 октября 2019

Я хотел сохранить метаданные Spring Spring, связанные с заданиями / этапами, вместо использования MapJobRepository, поскольку это не рекомендуется для производственного использования.
Я расширил DefaultBatchConfigurer и переопределил методы для использования My Primary DataSource и Transaction Manager. с помощью JobRepositoryFactoryBean.
Также у меня есть зарегистрированный компонент SimpleJobLauncher для использования собственного репозитория заданий, для которого я использовал приведенный ниже код

@Bean
SimpleJobLauncher simpleJobLauncher() throws Exception {
    SimpleJobLauncher simpleJobLauncher= new SimpleJobLauncher();
    simpleJobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor());
    simpleJobLauncher.setJobRepository(customRepository());
    return simpleJobLauncher;
}

@Bean
public JobRepository customRepository() throws Exception {
JobRepositoryFactoryBean jobRepositoryFactoryBean = new JobRepositoryFactoryBean();
jobRepositoryFactoryBean.setDataSource(myPrimaryDataSource);
jobRepositoryFactoryBean.setTransactionManager(myTransactionManager);
jobRepositoryFactoryBean.setDatabaseType("MYSQL");
jobRepositoryFactoryBean.setTablePrefix("BATCH_");
jobRepositoryFactoryBean.setMaxVarCharLength(1000);
return jobRepositoryFactoryBean.getObject();
}

При запуске задания я сталкиваюсь с приведенным ниже исключением.

java.lang.NullpointerException:null
    at org.springframework.batch.core.repository.dao.MapJobExecutionDao:synchronizeStatus(MapJobExecutionDao.java 161)

Пожалуйста, дайте мне знать, где именно моя конфигурация неверна.

1 Ответ

0 голосов
/ 28 октября 2019

По вашему исключению, Spring Batch настроен на использование хранилища заданий на основе карты, а не постоянного хранилища.

Поскольку вы расширили DefaultBatchConfigurer, вам нужно переопределить createJobRepository и вернуть свойхранилище пользовательских заданий. Объявление bean-компонента типа JobRepository в контексте приложения недостаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...