Попытка отправить сообщение в восходящий поток всякий раз, когда они доступны / готовы, и закрыть соединение после сброса, а не опрашивать сообщение, используя интервал реактивного потока пружины.
@GetMapping(value = "/getValue/{randomId}", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> statusCheck(@PathVariable("randomId") @NonNull String randomId) {
return Flux.<String>interval(Duration.ofSeconds(3))
.map(status -> {
if (getSomething(randomId).
equalsIgnoreCase("value"))
return "value";
return "ping";
}).take(Duration.ofSeconds(60)).timeout(Duration.ofSeconds(60));
}
Слушатель Кафки обновляет значение randomId на карте по мере его получения, метод getSomething проверяет значение randomId через определенные интервалы на карте. Поэтому вместо того, чтобы проверять интервалы и сохранять данные на карте, я хочу отправить сообщение клиенту, когда получатель получит сообщение.