Как настроить Spring Batch для одного считывателя с несколькими пишущими предметами? - PullRequest
0 голосов
/ 15 января 2019

У меня есть ситуация, когда мне приходится выполнять операции с БД для двух разных баз данных, как показано ниже.

stepBuilderFactory.get("some text")
                  .<POJO,POJO>chunk(200) 
                  .reader(dataReader)
                  .writer(writeToDB1)
                  .writer(writeToDB2) 
                  .faultTolerant()
                  .skipLimit(10) 
                  .skip(DataAccessException.class)
                  .build();

Только второй писатель исполняется, игнорируя первого писателя. Можно ли этого достичь, используя Spring Batch 3.x & Spring Boot 1.5.x?

1 Ответ

0 голосов
/ 16 января 2019

CompositeItemWriter - это то, что вам нужно. Он позволяет вам составлять записи делегатов для записи элементов в несколько мест назначения.

Когда ваши авторы-делегаты имеют значение ItemStream s (что, очевидно, имеет место для вас), вам нужно зарегистрировать их как потоки на шаге, чтобы их методы обратного вызова из интерфейса ItemStream правильно вызывались в необходимых точках жизненного цикла шага (или вкратце, чтобы их ItemStream контракт был правильно выполнен). Подробнее об этом вы можете узнать в Регистрация ItemStream с помощью раздела справочной документации.

Надеюсь, это поможет.

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