Как можно уведомить конкретный поток в Spring Boot - PullRequest
0 голосов
/ 17 декабря 2018

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

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

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

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

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

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

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

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

...