В настоящее время я переношу нашу существующую асинхронную REST-архитектуру Spring на новую библиотеку WebFlux Spring, и у меня есть вопрос по объединению нескольких запросов, чтобы они могли прослушивать один и тот же опубликованный ответ.
Пример использования выглядит следующим образом:
- Клиент A подключается к нашему веб-серверу и запрашивает данные
- Мы обращаемся к нашему кешу, чтобы проверить, есть ли там данные
- Мы этого не делаем, поэтому мы идем и получаем эти данные (клиент A подписался и ждет ответа)
- Клиент B подключается к нашему веб-серверу и запрашивает те же данные (обращается к той же конечной точке)
- Проверяем кеш, данных все равно нет
- Поскольку мы уже получаем эти данные для клиента A, мы не хотим делать еще один запрос, однако мы также не хотим отказываться от клиента B. Клиент B должен иметь возможность прослушивать ту же информацию
Как клиент B может подписаться на тот же поток ответов, которого ожидает клиент A?