Я изучаю RabbitMQ и мне было интересно, как вернуть данные, которые он обрабатывает, клиенту (пользователю сайта).
Процесс, о котором я думаю, состоит из конечной точки REST, где пользователь запрашивает что-то для обработки, для завершения которого требуется около 5 секунд. Таким образом, пользователь запрашивает его, веб-служба пересылает запрос в очередь RabbitMQ, которая будет иметь до 10 потребителей в докер-контейнерах, слушающих его и готовых обработать запрос. Пока все хорошо, я могу это сделать. Дело в том, как я могу вернуть данные пользователю после того, как потребитель завершил их обработку?
Имея в виду дизайн ниже, есть изображение для лучшего понимания:
Другими словами, это будет что-то вроде:
1 - Производитель (остальные) получает запрос и отправляет сообщение в RabbitMQ.
2 - RabbitMQ пересылает сообщение любому прослушивающему потребителю.
3 - потребитель обрабатывает данные.
4 - Вот где я потерялся. Как я могу вернуть сгенерированные данные клиенту (пользователю сайта)? Еще одна вещь, пользователь будет ждать окончания запроса, не нужно отправлять его позже.
Для большей детализации я использую java, а остальная часть - это весенняя загрузка.
Изображение: