2015-04-21 5 views
1

Я использую Spring Batch в веб-приложении. Работы выполняются пользовательским TaskExecutor, который управляет представленными Runnable s в очереди и выполняет их один за другим. Таким образом, многие задания имеют статус STARTING или STARTED в течение длительного времени.Как отказаться от работы зомби?

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

Как это можно сделать?

+0

Что вы думаете о выполнении задания выполняет старую работу в чистоте? –

+0

У меня была схожая идея, но это «чистое задание» должно запускаться автоматически при запуске сервера, и оно не должно отображаться в «JobRegistry». – stevecross

+0

является использование oif SB mandatatory? потому что вместо использования SB используйте другую tecnique: структура таблиц метаданных хорошо документирована и может быть очищена с использованием стандартных SQL-скриптов. –

ответ

1

Spring Batch не предоставляет инструменты из коробки для чего-то подобного. Причина этого заключается в том, что для этого обычно требуется какое-то человеческое решение о том, какие условия этот тип поведения уместен.

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

+0

Это всего лишь одно приложение Spring Boot, имеющее доступ к базе данных. Я думал о том, чтобы очистить файл 'data.sql', но я чувствую, что это неправильное место для этой задачи. – stevecross

Смежные вопросы