在LMAX破坏者中,生产者如何知道消费者已经完成了这项工作

时间:2014-04-18 08:12:31

标签: disruptor-pattern

无论如何消费者告知生产者任何特定事件是否成功处理?

3 个答案:

答案 0 :(得分:0)

并非直接否,并且鉴于破坏程序意图解耦处理这样做会否定它提供的所有性能增益。

答案 1 :(得分:0)

如果您愿意,可以将其连线。像

这样的东西
class MyEvent {
  String payload;
  Runnable onComplete;
}

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

干扰者往往不适合呼叫者需要阻止结果的事情。

答案 2 :(得分:0)

你不能在发布之前维护你的生产者和消费者,生产者增量计数器中的计数器,处理后的消费者增量计数器,然后让生产者比较produced_count使用consumed_count