Proyecto Reactor: Flujo de tiempo de espera sólo si el primer artículo no se emite

Stan Ostrovskii:

Tengo un flujo que debe emitir un artículo casi de inmediato. Después de esto, no puede emitir un artículo para un largo período de tiempo. Quiero que el tiempo de espera si no hay ningún elemento se recibe inicialmente. Pero si uso el timeout(Duration)método, se agotará el tiempo cada vez que no hay ningún elemento se recibe en el período de tiempo determinado.

El código que tengo ahora, lo que no hace el trabajo por la razón indicada más arriba:

messageFlux.timeout(Duration.ofSeconds(30)).doOnError(e -> {
    // handle error
}).subscribe(m -> messageService.consumeMessage(m));

¿Hay incluso una manera de hacer esto de manera eficiente?

Stan Ostrovskii:

Esto funcionó para mí. En vez de:

messageFlux.timeout(Duration.ofSeconds(30))

Hago:

messageFlux.timeout(Mono.just(0L).delayElement(Duration.ofSeconds(30)))

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=372830&siteId=1
Recomendado
Clasificación