NEventStore:如何调度未分配事件的规模?

mbp*_*mbp 5 cqrs event-store

尽管我已经深入了解了NEventStore上的事务完整性,但我无法理解当NEventStore的许多实例连线时NEventStore如何真正扩展.

总结一下我的理解,一个事件被添加到未提出的提交,然后它发布给调度员,然后标记为已调度.

同时,无论何时连接NEventStore,它都会查找未分配的事件,然后调度它们并将事件标记为已分派.

但是,当新事件存储的连线将看到即将发送的未分配事件(来自其他商店)时,必须有一个短时间跨度.新的事件存储将再次发送事件.

想想这个架构:

Client -> Command Bus -> Command Handler -> EventStore persist -> Dispatch to Event Handlers

如果我们有很多Command Handlers来处理我们的负载,我们也会坚持许多事件.

如果我们经常处置或创建Command Handlers,那么许多EventStore将被连线并导致调度已经被分派的事件.

我知道调度员的消费者应该是幂等的,这不是我的问题.我的问题是我们是否会在高负载情况下向命令处理程序的消费者提供不必要的负载量?

Fab*_*ied 3

这个问题确实很老了,但是当我偶然发现它时,我会添加我的两分钱:我认为您不应该为命令处理程序的每个实例连接一个新的 NEventStore 实例。NEventStore 对象是无状态的,因此您可以为整个过程使用单个实例(或AppDomain)。

因此,当然,如果您有多个进程,每个进程都会连接一个新的 NEventStore,并且您的场景可能会成为现实。然而,影响可能非常小,并且不会太大地妨碍可扩展性。