7

我对关于日志步骤的最常见(或推荐)的中断器实现感到好奇。我最常见的问题是:

  • 它是如何实际实现的(通过示例)?
  • 使用 JPA 是否明智?
  • 什么数据库是常用的(由已经使用破坏者实施项目的社区)?
  • 在中间处理程序(EventProcessors)中使用是否明智,因此应该保存每条消息的状态,而不是在业务逻辑流程之前和之后?

顺便说一句(我很抱歉,我知道这与日志步骤无关),在 eventHandler 过程中从 RingBuffer 中删除消息的正确方法是什么(假设消息已死/过期并且应该由整个过程)。我想知道类似于死信通道模式的东西。

干杯!

4

1 回答 1

5

Disruptor 通常用于低延迟、高吞吐量的处理。例如,数百万条消息,典型延迟为数百微秒。由于很少有数据库可以处理这种具有合理延迟的更新速率,因此通常对原始文件进行日志记录,并复制到第二个(或第三个)系统。

出于报告目的,系统会读取此文件或侦听消息并尽快更新数据库,但这已脱离关键路径。

当每个事件处理器都处理完一个条目时,环形缓冲区中的条目就已失效。


在每个事件处理器都处理完它和它之前的所有消息之前,消息使用的槽是不可用的。在性能和对设计的影响方面,删除消息的成本都太高了

每个事件处理器都会看到每条消息。由于这种情况同时发生,这样做的成本很低,但事件处理器因此忽略消息是很正常的。(可能是大多数消息)

于 2012-09-06T08:00:15.597 回答