В релизном варианте джоба берет из БД задание и ставит в софт, ждет окончания, делает обработку и пишет результат в БД.
но в процессе отладки когда я что то тестирую, я переключаю режим в синхронный, что сразу отлавливать баги.
Я понял нюанс. Джоба берётся из базы сайта и передаётся в софт. Получается, физически она в базе не существует и, поэтому, откатывать джобу нельзя, т.к. софт обратно ничего не отдаст.
В этом случае я вижу два варианта:
1. Костыльный: всё также обходиться джобой, но внутрь сунуть sleep. Но это плохо.
2. Оптимальный: когда джоба берёт задание, делать пометку в базе о статусе (взята в работу) и передать в софт, дальше вернуть джобу в очередь. А при запуске джобы начинать чтение со статуса - если "новый" - передать в софт, а если "взято в работу" - проверить закончил ли софт её обрабатывать. Если ещё в работе, то просто возвращаем джобу в очередь до следующей итерации, а если софт выполнил/завалился - обновить статус на "завершено/завалено" и сообщить юзеру об этом.