【问题标题】:In LMAX disruptor,How producer knows consumer has finished the job在 LMAX 破坏者中,生产者如何知道消费者已经完成了工作
【发布时间】:2014-04-18 08:12:31
【问题描述】:

消费者是否会通知生产者任何特定事件已成功处理?

【问题讨论】:

    标签: disruptor-pattern


    【解决方案1】:

    不是直接不,并且考虑到破坏者旨在解耦处理,这样做会否定它提供的所有性能提升。

    【讨论】:

      【解决方案2】:

      如果你愿意,你可以把它连接起来。类似的东西

      class MyEvent {
        String payload;
        Runnable onComplete;
      }
      

      然后让您的事件处理程序/消费者/任何东西在处理有效负载后运行 onComplete。将 runnable 替换为 Future 或您可能喜欢的任何其他东西,但这种模式最适合异步事物(也许 runnable 在您的 UI 中设置了一个完成标志?)

      Disruptor 往往不适合调用者需要阻止结果的事情。

      【讨论】:

        【解决方案3】:

        你能不能只在你的生产者和消费者中维护计数器,生产者在发布前增加计数器,消费者在处理后增加计数器,然后让生产者将produced_countconsumed_count?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-26
          • 2013-06-14
          • 2018-02-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多