@gsaw

Как правильно конфигурировать spring cloud приложение?

Не могу сконфигурировать spring batch приложение, что бы запустить его в spring data flow. Бьюсь уже два дня и все как то очень сложно.

Задача прочитать csv и записать в одну табличку. reader и writer сконфигурировал, тут все просто и вроде ложно работать. Но вся петрушка, в spring batch и spring cloud task. Им очень необходима своя база данных, что бы туда записать свои контрольные данные TASK и JOB таблички. И все это очень усложняет конфигурирование приложения. Что бы тестировать локально, я создал такой конфиг

@Slf4j
@Configuration
@Profile("!cloud")
public class LocalConfiguration {

    @Bean
    public BatchConfigurer batchConfigurer(DataSource dataSource) {
        log.info("create local BatchConfigurer");
        return new DefaultBatchConfigurer(dataSource) {
            @Override
            public void setDataSource(DataSource dataSource) {
                log.info("called setDataSource");
            }
        };
    }

    @Bean
    public TaskConfigurer taskConfigurerLocal() {
        return new DefaultTaskConfigurer((DataSource) null);
    }
}


writer выглядит так

@Bean
    public ItemWriter<ZgsEntity> writerProduction() {
        log.info("create writer");
        return new RepositoryItemWriter<ZgsEntity>() {{
            setRepository(zgsRepository);
        }};
    }


Запускаю приложение, вроде csv файл обрабатывается, hibernate ставит Entity в очередь на запись, но самой записи не происходит. В логе вижу такое

2021-08-19 15:38:42.808 [main] TRACE o.h.engine.spi.IdentifierValue - ID unsaved-value strategy UNDEFINED
2021-08-19 15:38:42.808 [main] TRACE o.h.event.internal.EntityState - Transient instance of: com.daimler.zgs.entities.ZgsEntity
2021-08-19 15:38:42.808 [main] TRACE o.h.e.i.DefaultPersistEventListener - Saving transient instance
2021-08-19 15:38:42.808 [main] DEBUG o.h.e.i.AbstractSaveEventListener - Generated identifier: component[вырезал}, using strategy: org.hibernate.id.CompositeNestedGeneratedValueGenerator
2021-08-19 15:38:42.808 [main] TRACE o.h.e.i.AbstractSaveEventListener - Saving [com.daimler.zgs.entities.ZgsEntity#component[вырезал]{вырезал}]
2021-08-19 15:38:42.808 [main] TRACE org.hibernate.engine.spi.ActionQueue - Adding an EntityInsertAction for [com.daimler.zgs.entities.ZgsEntity] object
2021-08-19 15:38:42.808 [main] TRACE org.hibernate.engine.spi.ActionQueue - Adding insert with no non-nullable, transient entities: [EntityInsertAction[com.daimler.zgs.entities.ZgsEntity#com.daimler.zgs.entities.ZgsEntityId@3333245e]]
2021-08-19 15:38:42.808 [main] TRACE org.hibernate.engine.spi.ActionQueue - Adding resolved non-early insert action.
2021-08-19 15:38:42.810 [main] TRACE org.hibernate.internal.SessionImpl - Closing session [0eb1b3ba-2fb0-4187-a618-0eb24fb56e8b]
2021-08-19 15:38:42.810 [main] TRACE o.h.e.j.internal.JdbcCoordinatorImpl - Closing JDBC container [org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl@7ec68821]
2021-08-19 15:38:42.810 [main] TRACE o.h.r.j.i.ResourceRegistryStandardImpl - Releasing JDBC resources
2021-08-19 15:38:42.810 [main] TRACE o.h.r.j.i.LogicalConnectionManagedImpl - Closing logical connection
2021-08-19 15:38:42.810 [main] TRACE o.h.r.j.i.LogicalConnectionManagedImpl - Logical connection closed
2021-08-19 15:38:42.811 [main] INFO  o.s.batch.core.step.AbstractStep - Step: [step1] executed in 48ms


Смотрю в базе данных приложения, там пусто. Ну и по логам видно, что ничего и не пишет. Куда все девается, неясно. Поставил на zgsRepository @Transactional, толку никакого.

Мне кажется все пишется в базу, которая создается под spring batch и spring cloud, хотя для своего DataSource я указал @Primary.

Туториалы spring cloud и spring batch только намеками говорят, что надо сделать. И все такое сложное получается. Я уже запутался. Может есть какой то простой туториал, где разжовываются обе эти темы?

Спасибо
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы