“由于缺少请求而无法发出刻度号XXX”是什么意思?

时间:2018-07-09 06:29:00

标签: project-reactor

我有一个简单的代码,可以使用以下代码定期执行一些任务:

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)

查看源代码,我无法理解它的含义。有人可以解释吗?如果有人可以通过重现此问题的代码段来帮助我,那也很好。

谢谢

1 个答案:

答案 0 :(得分:2)

从本质上讲,它意味着链中的某些代码太慢而无法及时处理发出的元素。以该流为例:

Flux.interval(Duration.ofSeconds(1)) //emit every second
  .map(i -> { 
         //do something that takes 2 seconds
       })
  .subscribe();

每秒钟将一个新值推送到流中。那是Reactor试图做到的,但是流仍在忙于处理先前的值(花费一秒钟以上)。请注意,此示例仅用于说明,它可能会也可能不会重现您的问题。