Spring Batch Job как откатить все шаги во всем задании? - PullRequest
0 голосов
/ 26 мая 2020

Мне нужно выполнить задание, состоящее из 3 шагов. Первый шаг получает данные из веб-службы. Второй шаг вызывает другую веб-службу для получения дополнительных данных. И третий шаг загружает изображения на основе данных, которые мы получили на первом шаге.

Теперь, что происходит внутри, не так важно. Но одно из требований состоит в том, что если один из шагов завершится неудачно, то все предыдущие работы также должны быть очищены. Например, если что-то не удается на втором этапе, все данные, полученные на первом этапе, также должны быть очищены. Потому что не может быть несогласованных данных.

Теперь я знаю, что это не предусмотрено в Spring Batch Job, но есть ли еще способ добиться этого? Может быть, использовать какой-нибудь JobExecutionListener или что-то в этом роде?

Или мне нужно объединить все эти шаги в один шаг?

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вы на правильном пути. В Spring Batch транзакционность находится на уровне фрагментов, поэтому, если вам нужно сделать некоторый откат, который зависит от вашего logi c, вы можете сделать это, написав некоторые стратегии очистки в своем JobExecutionListener или на уровне StepExecutionListener в зависимости от ваших потребностей. .

0 голосов
/ 26 мая 2020

Ваш вопрос мне непонятен. Как я понял, вы можете использовать @Transactional для отката. если вы вызываете разные методы, создайте методы транзакции для каждой службы и вызовите все внутри своего весеннего задания.

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