У меня есть служба REST, определенная в Spring Boot, которая предоставляет синхронный REST API для вызова пользователем из веб-интерфейса.Ожидается, что служба предоставит ответ в режиме реального времени.
Служба взаимодействует с внешней конечной точкой в асинхронном режиме.То есть: - Одно одностороннее исходящее сообщение для запроса - Одно одностороннее входящее сообщение для ответа
Как можно объединить два сообщения, чтобы создать впечатление синхронного поведения?Я думаю о нескольких подходах, таких как:
Служба отдыха отправляет запрос в конечную точку.Как только конечная точка отвечает, ответ добавляется в ConcurrentHashMap.Служба отдыха запрашивает HashMap каждые несколько миллисекунд и, как только находит правильный ответ, завершается с действительным кодом причины HTTP.Это похоже на опрос, и я думаю, сможем ли мы этого избежать.
Служба отдыха отправляет запрос в конечную точку.Как только конечная точка отвечает, ожидающий поток в службе отдыха получает уведомление.Однако ожидающий поток должен завершить работу только в том случае, если получен правильный ответ (т. Е. Совпадают идентификаторы корреляции и т. Д.). Возможно ли это?
Я понимаю, что это похоже на сценарий ответа на запрос очереди JMS, где каждый запрос очереди JMS открывает слушателя в очереди ответов с критериями выбора сообщения.Однако в этом случае я должен реализовать это с помощью HTTP.
Любые мысли по этому поводу приветствуются.Я полностью убежден, что мне не хватает чего-то очень простого, но я не уверен, что именно.
Большое спасибо!