Система, над которой я работаю, зависит от ответа, полученного от внешнего API, часто сейчас отправляемые нами запросы заканчиваются тайм-аутом, и мы в конечном итоге теряем выполняемую транзакцию.
Нам необходимо многократно повторять запросы, пока API не ответит, чтобы мы могли продолжить транзакцию.
Мне посоветовали использовать RabbitMQ, чтобы он ставил запросы в очередь до тех пор, пока API не ответит, поэтому в этом случае мое приложение должно быть производителем, который выдвигает в очередь, что я до сих пор не могу понять, как я собираюсь получить обратный вызов из очереди, как только мое сообщение (запрос успешно выполнен)? Гарантирует ли RabbitMQ, что мой запрос успешно достиг места назначения? будет ли пытаться отправить запрос до тех пор, пока API не ответит (API доступен для обмена)? Как мое приложение возобновит выполнение, связанное с запросом? Моя основная идея сейчас состоит в том, чтобы изолировать тот код, который основан на немедленном ответе внешнего API.
Является ли даже RabbitMQ лучшим выбором здесь?
У меня нулевой опыт работы с RabbitMQ, поэтому я все еще скептически отношусь к тому, уместно ли это в данном случае использования, поэтому заранее прошу прощения, если некоторые из этих вопросов совершенно глупы.
PS: мы отслеживаем данные тайм-аута. API, к которому мы подключаемся, является частью внешней системы, мы не можем его контролировать.