如何将超时功能应用于LMAX Disruptor Queue?

时间:2012-02-27 13:56:04

标签: timeout queue disruptor-pattern

致LMAX Disruptor http://code.google.com/p/disruptor/的开发者/用户:

我的问题: 任何人都可以建议如何将一个超时功能应用于Disruptor,例如使用EventHandler?

以下是我的工作中出现的一个场景:

  1. 发件箱 - 通过网络发送到服务器的邮件
  2. 收件箱 - 从服务器收到的ACK消息
  3. ACK处理程序 - 将发件箱消息标记为已确认
  4. Timeout Handler - 将发件箱消息标记为NACKed(非常需要,但它可以在哪里适用于Disruptor设计?)
  5. 有没有人有同样的意见? 或者任何人都可以指出为什么它是不必要的。 我希望随后的辩论会很简短。

    谢谢。

1 个答案:

答案 0 :(得分:0)

澄清超时处理程序会在无法传递邮件的一段时间后“触发”吗?

它与disruptor的工作方式是你有一个入站的环形缓冲区和一个用于出站信息的环形缓冲区...所以电子邮件进来,使用适当的事件将它放入入站环形缓冲区。然后处理消息(即解码,分析,日志,存储)并将其发送到另一个系统,方法是将其放入出站的ringbuffer ...另一个处理程序接收消息并将其存储到数据库中或使用smtp将其发送到另一个服务器...如果发生错误/超时等,您在入站环形缓冲区中创建一个事件,发出错误信号(NACK)并处理此消息。那有意义吗?!?