JSR 352 возобновить работу?

Когда задание перезапускается, снова запускаются только неисправные разделы. Как мне снова запустить успешно выполненную работу?

Есть ли разница между повторной отправкой работы и ее перезапуском?

Я использую реализацию IBM JSR 352 в Websphere Liberty.

1 ответ

Решение

Пакет Java спроектирован таким образом, что при перезапуске экземпляра задания выполнение продолжается с того места, на котором вы остановились (в предыдущем неудачном или остановленном выполнении).

Так что обычно это означает две вещи:

  1. В рамках задания вы начинаете с ранее неудачного шага (или шага, на котором задание было остановлено).
  2. На этом шаге вы начинаете с позиционирования курсора ввода, используя значения контрольных точек, которые хранятся в контейнере пакета.

Таким образом, если при первоначальном выполнении вы выполнили шаг 1, а затем потерпели неудачу на шаге 2 в записи #4123 и установили контрольные точки каждые 100 записей, то при перезапуске вы обычно начинаете выполнение с шага 2 в записи #4100.

В некоторых случаях необходимо выполнить шаг 1 и при перезапуске, прежде чем выполнять шаг 2, где задание ранее не было выполнено, и есть возможность также получить это поведение.

Обычно отправлять / начинать работу часто, часто по расписанию.

В терминах спецификации пакета новый JobInstance создается при каждом запуске задания. В это время создается первоначальное JobExecution для этого JobInstance. Если выполнение не выполняется до конца, экземпляр может быть перезапущен, и в этот момент для этого JobInstance создается второй JobExecution.

Таким образом, перезапуск использует контрольные точки и историю выполнения предыдущего JobExecution, в то время как запуск начинается с чистого листа.

Другие вопросы по тегам