Сначала заявление о проблеме: Я использую Spring-Batch в моей среде DEV. Когда я перемещаю код в производственную среду, у меня возникает проблема. В моей среде DEV Spring-Batch может создавать свои таблицы данных транзакций на нашем сервере баз данных DB2 без проблем. Это не вариант, когда мы переходим к PROD, поскольку это работа только для чтения.Spring Batch - Как предотвратить пакет от хранения транзакций в БД
Покушение решение:
Поиск Stack Overflow Я нашел объявление: Spring-Batch without persisting metadata to database?
который звучал идеально, поэтому я добавил
@Bean
public ResourcelessTransactionManager transactionManager() {
return new ResourcelessTransactionManager();
}
@Bean
public JobRepository jobRepository(ResourcelessTransactionManager transactionManager) throws Exception {
MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean = new MapJobRepositoryFactoryBean(transactionManager);
mapJobRepositoryFactoryBean.setTransactionManager(transactionManager);
return mapJobRepositoryFactoryBean.getObject();
}
Я также добавил его к моему работодателю по телефону .reporitory (jobRepository).
Но я получаю
Caused by: java.lang.NullPointerException: null
at org.springframework.batch.core.repository.dao.MapJobExecutionDao.synchronizeStatus(MapJobExecutionDao.java:158) ~[spring-batch-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
Так что я не знаю, что делать здесь. Я новичок в «Весне», поэтому я учу себя как иду. Я открыт для других решений, таких как база данных в памяти, но я не смог заставить их работать. Мне не нужно сохранять информацию о состоянии или сеансе между запусками, но запрос базы данных, который я запускаю, будет возвращать около миллиона строк, поэтому мне нужно будет получить это в кусках.
Любые предложения или помощь были бы весьма полезны.
это не потокобезопасный. Если два потока одновременно пытаются получить доступ к одному и тому же заданию, будет исключение доступа к параллельному потоку – Harish
Как бы вы изменили его на потокобезопасность, соблюдая ограничения, над которыми я работаю? – VydorScope
Я использовал хранилище на основе карты – Harish