Как можно уведомить конкретный поток в Spring Boot

У меня есть служба REST, определенная в Spring Boot, которая предоставляет синхронный REST API для вызова пользователем из веб-интерфейса. Ожидается, что служба предоставит ответ в режиме реального времени.

Служба взаимодействует с внешней конечной точкой асинхронно. То есть: - Одно одностороннее исходящее сообщение для запроса - Одно одностороннее входящее сообщение для ответа

Как я могу объединить два сообщения, чтобы создать впечатление синхронного поведения? Я думаю о нескольких подходах, таких как:

  • Служба отдыха отправляет запрос в конечную точку. Как только конечная точка отвечает, ответ добавляется в ConcurrentHashMap. Служба отдыха запрашивает HashMap каждые несколько миллисекунд и, как только находит правильный ответ, завершается с действительным кодом причины HTTP. Это похоже на опрос, и я думаю, сможем ли мы этого избежать.

  • Служба отдыха отправляет запрос в конечную точку. Как только конечная точка отвечает, ожидающий поток в службе отдыха получает уведомление. Однако ожидающий поток должен завершить работу только в том случае, если получен правильный ответ (т. Е. Совпадают идентификаторы корреляции и т. Д.). Возможно ли это?

Я понимаю, что это похоже на сценарий ответа на запрос очереди JMS, где каждый запрос очереди JMS открывает слушателя в очереди ответов с критериями выбора сообщений. Однако в этом случае я должен реализовать это с помощью HTTP.

Любые мысли по этому поводу приветствуются. Я полностью убежден, что мне не хватает чего-то очень простого, но я не уверен, что именно.

Большое спасибо!

0 ответов

Другие вопросы по тегам