gpt4 book ai didi

disruptor-pattern - Disruptor 丢弃消息问题

转载 作者:行者123 更新时间:2023-12-02 03:05:57 28 4
gpt4 key购买 nike

我们在生产中使用 LMAX Disruptor 已经将近一年了。一切都很好,直到上周我们看到 Disruptor 丢弃了消息。我们的 Disruptor 结构非常简单:

Kafka -> RingBuffer -> Eventhandler1 -> Eventhandler2 -> Eventhandler3

每个 Eventhandler 都有一个 try-catch block 来捕获所有异常。最慢的是 Eventhandler2,每条消息大约需要 3 毫秒。

我们向 Kafaka 发送了 53 条消息,所有消息均由 Eventhandler1 处理。但不知何故,Eventhandler2 和 Eventhandler3 只接收了 23 条消息,我们在日志中没有看到任何异常。

我们尝试在我们的开发环境中重现此问题,但没有发现此问题。

所以我的问题是:

  1. Disruptor 是否可以丢弃消息?
  2. 如果是,在什么情况下它可能会丢弃消息?

最佳答案

我在生产和使用负载测试测试环境时遇到了同样的问题。如果您有 2 个或更多并发生产者(环形缓冲区发布者)但 Disruptor 是使用 ProducerType.SINGLE 初始化的,它可能会丢失或行为不可预测。请检查。

ProducerType.MULTI 用法示例:

Disruptor<CustomEvent> disruptor = new Disruptor<CustomEvent>(eventFactory, bufferSize, executor, ProducerType.MULTI, new BlockingWaitStrategy());

关于disruptor-pattern - Disruptor 丢弃消息问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42840223/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com