プロジェクトの原子炉:フラックスタイムアウト最初の項目が放出されていない場合のみ

スタンOstrovskii:

私はほとんどすぐにアイテムを放出しなければならないフラックスを持っています。この後、それは長時間アイテムを放出しなくてもよいです。項目が最初に受信されない場合、私は、タイムアウトにそれをしたいです。私が使用している場合でも、timeout(Duration)この方法を、それが何のアイテムが一定の期間に受信されないたびにタイムアウトします。

上記で述べた理由では動作しません、私が今持っているコード、:

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

これを効率的に行うためにも方法はありますか?

スタンOstrovskii:

これは私のために働きました。の代わりに:

messageFlux.timeout(Duration.ofSeconds(30))

私がやります:

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=372820&siteId=1