Spring Batch: коммит-интервал не учитывается после отката во время записи - PullRequest
2 голосов
/ 11 августа 2011

Скажите, что мой интервал фиксации равен 1000.

И во время записи я получаю сообщение об ошибке на 990-й записи, которое можно пропустить согласно политике пропуска.

Таким образом, произойдет откат, и писатель снова начнет писать те же записи из записи 1.

Однако, на этот раз, он фиксирует каждую запись. Он не соблюдает интервал фиксации. Это замедляет работу.

Почему такое поведение? Я что-то упустил в моей конфигурации?

Спасибо.

1 Ответ

3 голосов
/ 11 августа 2011

то, что bevaviour является обязательным для весеннего пакета, чтобы изолировать плохой элемент (ы), в основном он откатывает чанк и обрабатывает / записывает каждый элемент с commit-rate = 1, чтобы найти плохой (в процессоре или в записывающем устройстве) *

см. весенний пакетный комментарий на форуме к подобной проблеме

соответствующая часть

--> 5 items read, processing starts
<processor called:15>
<processor called:16>
<processor called:17> will throw an error on write
<processor called:18>
<processor called:19>
<before write:[15, 16, 17, 18, 19]>
<on write error>
--> error on item 17, but it was in the list, lets find it
--> rollback
<before chunk>
--> spring batch goes through all items of the chunk again to find the bad item
--> basically it runs now with commit-rate="1" (only for this chunk)
<processor called:15>
<after write:[15]>
<after chunk>
<before chunk>
<processor called:16>
<after write:[16]>
<after chunk>
<before chunk>
<processor called:17> called again for the bad item, because it's still unknown to spring batch, that this is the bad one
--> no write, because itemWriter.write() was called with the bad item only and did throw an exception (again)
--> but now spring batch knows the bad item
<before chunk>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...