Я хочу использовать реактивный WebClient Spring для опроса конечной точки REST, которая использует длинный опрос.
Конечная точка предоставляет сообщения для канала чата. Когда я вызываю его, а сообщения нет, он блокируется (т.е. не возвращается), пока не появится сообщение (или не пройдет 30 секунд).
Итак, в синхронном мире я бы выделил поток для отслеживания этого канал, вызовите конечную точку через RestTemplate, дождитесь результата, запишите его в общую очередь и начните следующий запрос. Затем потребитель может реагировать на новые элементы, появляющиеся в очереди.
В реактивном мире это немного другое. В идеале потребитель подписался бы на поток сообщений. Вопрос в том, как построить этот поток.
Лог c должен быть:
Mono<String> message = WebClient.get(). […] .bodyToMono(String.class);
// When the mono completes, create a new one just as described above
// Combine all of the monos into a Flux
flux.subscribe(message -> System.out.println("New message" + message);
Я думаю, что мне нужен какой-то оператор switch…
, но я могу найти правильный один.