Я разрабатываю сервис, который будет получать запросы, которые должны выполняться только один раз (может быть получено более одного раза из-за наличия уникального идентификатора).
Поток:
внешний мир -> HTTP -> [Набор экземпляров Myservice] -> HTTP ->
Услуги поставщика
Итак, я получаю кучу запросов по HTTP, и я хочу выполнить какое-то преобразование, проверить, сохранить запрос в базе данных и отправить сервису поставщика также по HTTP.
Мой вопрос:
Каков эффективный способ достижения схемы сохранения и пересылки в моем сервисе, т.е. получить запрос и сохранить его немедленно, поэтому немедленно отправлять его во «внешний мир», а затем в свое собственное время направить его в службу назначения, повторять попытки столько раз, сколько необходимо?
Проблемы:
- Что, если один из экземпляров myservice отключится, когда он отправляет запрос в службу поставщика?
- Как я буду отслеживать, если есть несколько запросов, которые не были перенаправлены?
- Как избежать другой услуги оркестровки?
- Как избежать другой службы с одним экземпляром, которая эффективно следит за базой данных и пересылает любые запросы, которые не были перенаправлены.
- Как минимизировать внешние зависимости - например, Я знаю, что здесь может помочь какая-то очередь, но я пытаюсь понять, смогу ли я этого избежать.