我有一个简单的代码,可以使用以下代码定期执行一些任务:
Flux.interval(Duration.ZERO, interval, scheduler)
有时(很少)我看到以下错误消息:
Could not emit tick 4218 due to lack of requests (interval doesn't support small downstream requests that replenish slower than the ticks)
查看源代码,我无法理解它的含义。有人可以解释吗?如果有人可以通过重现此问题的代码段来帮助我,那也很好。
谢谢
答案 0 :(得分:2)
从本质上讲,它意味着链中的某些代码太慢而无法及时处理发出的元素。以该流为例:
Flux.interval(Duration.ofSeconds(1)) //emit every second
.map(i -> {
//do something that takes 2 seconds
})
.subscribe();
每秒钟将一个新值推送到流中。那是Reactor试图做到的,但是流仍在忙于处理先前的值(花费一秒钟以上)。请注意,此示例仅用于说明,它可能会也可能不会重现您的问题。