0

在事件处理应用程序中,我想记录所有已处理事件的序列号以用于日记目的。这些序列号必须是唯一的,因此在重新启动应用程序时需要检索已使用的最高编号(水印)并确保它为新事件分配更高的编号。

该应用程序使用已经具有序列概念的LMAX Disruptor —— 每个发布到环形缓冲区和从环形缓冲区读取的内容都与一个序列号相关联。但是,该数字会在系统重新启动时重置为 0。有没有办法在启动破坏者之前将初始序列号设置为特定值?

另一种解决方案是使用中断器提供的序列号,并将启动时读取的水印添加到其中,但是必须在需要全局序列号的任何地方执行该操作,所以我更喜欢如果我可以依靠破坏者集中掌握的数字。

4

2 回答 2

1

您需要将您的序列初始化为您的 Journaled 值。

这不容易通过 Dirsruptor dsl 公开,因此您需要实例化您自己的EventProcessors并在那里提供您的初始化序列。

于 2013-11-17T22:36:36.253 回答
1

RingBuffer有一个你应该可以调用的resetTo()方法。请注意,我自己从未尝试过。

于 2013-11-06T19:43:14.403 回答