Projet de réacteur: Flux Délai d'attente seulement si l'article premier ne sort pas

Stan Ostrovskii:

J'ai un flux qui devrait émettre un élément presque immédiatement. Après cela, il ne peut pas émettre un élément pendant une longue période de temps. Je veux que ce délai d' attente si aucun élément est initialement reçu. Mais si j'utilise la timeout(Duration)méthode, il délai d' attente à chaque fois aucun élément est reçu dans la période de temps donnée.

Le code que j'ai maintenant, ce qui ne fonctionne pas pour la raison indiquée ci-dessus:

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

Y at-il même une façon de le faire efficacement?

Stan Ostrovskii:

Cela a fonctionné pour moi. Au lieu de:

messageFlux.timeout(Duration.ofSeconds(30))

Je fais:

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

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=372823&siteId=1
conseillé
Classement