В простой ситуации, если тебе нужно какоето гарантированное действие выполнить, то в ФЗ нужно заблокировать очередь, выполнить действие, и разблокировать только после удаления ссылки из очереди.
А если это очень долго? То перепровести второй раз не смогут изза долгой блокировки.
Можно в ФЗ открыть транзакцию, блокировка на ключ очереди, дождаться окончания блокировки (завершилось в родительском потоке проведение). Записать ключ во второй РС2."А-ля Задание выполняется", а из очереди сразу же удалить и закомиттить. Выполнять работу без транзакции. В самом конце удалить из РС2 тоже.
Если ФЗ будет долгим, то повторно перепроводят сколько угодно раз.
В любой момент падения мы всегда имеем ссылку либо в очереди, либо во вторичном регистре. Плохих ожиданий при этом нет. ФЗ при повторных перепроведениях не запускать, если с таким ключем оно уже выполняется.
Целостность данных гарантирована на 100%.