/ / Spring Batch - Jak ponowić próbę, a następnie pominąć, jeśli ponowienie nie powiedzie się - java, spring, batch-spring

Spring Batch - Jak ponowić próbę, a następnie pominąć, jeśli ponowienie nie powiedzie się - java, spring, batch-spring

Więc obecnie mam proces wsadowy wiosennyma złożoną zasadę pominięcia zaimplementowaną dla kilku niestandardowych typów wyjątków. Problem, na który teraz natknąłem się, to fakt, że nie zawsze chcę po prostu pominąć, gdy otrzymam wyjątek.

W przypadku niektórych wyjątków związanych z bazą danych chciałbym spróbować ponownie kilka razy, a następnie, jeśli nadal nie powiedzie się, przejdź dalej i pomiń rekord. Niestety nie widzę sposobu, aby to zrobić.

Próbowałem implementować własną RetryPolicy, ale jedyną opcją dla canRetry jest true lub false (raczej niż false Chciałbym rzucić mój wyjątek możliwy do pominięcia).

Czy też tu coś pomijam, czy nie jest to tak naprawdę funkcjonalność, którą ma wiosenna seria?

Dzięki

Odpowiedzi:

0 dla odpowiedzi № 1

Od StepBuilderFactory, Możesz to zrobić:

stepBuilder.reader(reader).writer(writer).faultTolerant().retryPolicy(retryPolicy).skipPolicy(skipPolicy).

I tak, działa. Miałem ten sam problem i po teście widzę, że moje przedmioty są ponawiane po moim RetryPolicy a następnie są pomijane po moim SkipPolicy.