Если мы в БП используем автоматизированные системы мы в любом случае сталкиваемся с возможными техническими проблемами. Т.е. мы, как мне кажется, должны ожидать что БП не может быть завершён и эта ситуация должна быть как-то отработана с пониманием причин инцидента. Нет?
Ну ок, добавим конкретики, есть некий экстернал таск. Он внутри получает техническую ошибку. Ретраи, тайм-ауты, залогировали. И что дальше? Бизнесово задача не выполнена, что я должен выкинуть наверх в схему?
Ну как вариант, вызов внешней обработки делать через брокер сообщений. Из обработчика возвращать два вида колбеков : нормальный и с признаком ошибки. Нормальный закрывает таску, а ошибочный инициирует обработку.
Если уж совсем по феншую, то ошибочный колбек может стартавать процесс обслуживания инцидента, в котором специальные люди пофиксят данные или код, а экстернал таск будет просто ждать, пока не прилетит долгожданный Complete колбэк
Ну ок, добавим конкретики, есть некий экстернал таск. Он внутри получает техническую ошибку. Ретраи, тайм-ауты, залогировали. И что дальше? Бизнесово задача не выполнена, что я должен выкинуть наверх в схему?
Если уж совсем по феншую, то ошибочный колбек может стартавать процесс обслуживания инцидента, в котором специальные люди пофиксят данные или код, а экстернал таск будет просто ждать, пока не прилетит долгожданный Complete колбэк
Экстернал таск же не будет просто ждать. Рано или поздно истечет lock и он отправится на выполнение повторно.
Если уж совсем по феншую, то ошибочный колбек может стартавать процесс обслуживания инцидента, в котором специальные люди пофиксят данные или код, а экстернал таск будет просто ждать, пока не прилетит долгожданный Complete колбэк
Мы так сделали. Ответ с ошибкой стартует процесс обработки, для специального человека возникает задача и он решает, что делать дальше.