0

tryPublishEvent我通过调用函数将数据添加到 Disruptor 。在我等待 40 秒并尝试unprocessedDataCount通过以下计算进行检查后:

long ringBufferUnProcessedCount = disruptor.getBufferSize() 
                                  - disruptor.getRingBuffer().remainingCapacity()

有时remainingCapacity值等于 0,即使在获得ringBufferUnProcessedCount值之前我们等待 40 秒。这个错误很少发生。

你不知道为什么会这样吗?

4

1 回答 1

1

如果disruptor.getRingBuffer().remainingCapacity()等于 0,则意味着您的干扰器已满并且您正在经历背压

这可能是由两件事引起的,要么eventHandlers由于某种原因被阻止并且无法向前推进,要么eventHandlers无法足够快地处理事件以跟上新事件的产生速度。

于 2021-02-27T15:39:48.917 回答