如何在测试用例中等待所有 Disruptor 消息被消耗

问题描述 投票:0回答:1

我正在尝试对使用来自 Disruptor 环形缓冲区的消息的应用程序进行单元测试。在测试中我想

  1. 配置干扰器,它是 EventHandlers
  2. 将消息发布到环形缓冲区
  3. 等待所有消息被所有EventHandlers
  4. 消费
  5. 执行一些断言

有没有一种简单的方法可以让我等待消息被消耗(上面的步骤 3)?

java event-handling event-sourcing circular-buffer disruptor-pattern
1个回答
0
投票

我最终用一个循环解决了这个问题,当

RingBuffer.remainingCapacity()
等于
Disruptor.getBufferSize()

时完成
    private void awaitRingBuffer() {
        RingBuffer<MyEvent> ringBuffer = disruptor.getRingBuffer();
        while (ringBuffer.remainingCapacity() != disruptor.getBufferSize()) {
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.