JSR 352 возобновить работу?
Когда задание перезапускается, снова запускаются только неисправные разделы. Как мне снова запустить успешно выполненную работу?
Есть ли разница между повторной отправкой работы и ее перезапуском?
Я использую реализацию IBM JSR 352 в Websphere Liberty.
1 ответ
Пакет Java спроектирован таким образом, что при перезапуске экземпляра задания выполнение продолжается с того места, на котором вы остановились (в предыдущем неудачном или остановленном выполнении).
Так что обычно это означает две вещи:
- В рамках задания вы начинаете с ранее неудачного шага (или шага, на котором задание было остановлено).
- На этом шаге вы начинаете с позиционирования курсора ввода, используя значения контрольных точек, которые хранятся в контейнере пакета.
Таким образом, если при первоначальном выполнении вы выполнили шаг 1, а затем потерпели неудачу на шаге 2 в записи #4123 и установили контрольные точки каждые 100 записей, то при перезапуске вы обычно начинаете выполнение с шага 2 в записи #4100.
В некоторых случаях необходимо выполнить шаг 1 и при перезапуске, прежде чем выполнять шаг 2, где задание ранее не было выполнено, и есть возможность также получить это поведение.
Обычно отправлять / начинать работу часто, часто по расписанию.
В терминах спецификации пакета новый JobInstance создается при каждом запуске задания. В это время создается первоначальное JobExecution для этого JobInstance. Если выполнение не выполняется до конца, экземпляр может быть перезапущен, и в этот момент для этого JobInstance создается второй JobExecution.
Таким образом, перезапуск использует контрольные точки и историю выполнения предыдущего JobExecution, в то время как запуск начинается с чистого листа.