1

我们有一个 CQRS 项目,并且正在考虑一种实现“追赶”的方法,例如启动一个新的事件处理程序并告诉事件存储为他重播所有事件。

我们不确定是否应该通过 NServiceBus 进行回放,因为存在真正的 1:1 连接并且没有发布/订阅情况。此外,我们认为我们的新消费者无法跟上发布速度,并且其输入队列会卡住。

这里的最佳做法是什么?

4

1 回答 1

0

我听说有人在做以下事情:

  1. 有一个重播/重播事件的系统。产生已经看到这些事件的投影的事件处理程序忽略这些事件。
  2. 在重置事件或从头开始新的投影时,允许事件处理程序直接查询事件。这可以在某些系统中通过直接从事件存储中读取来完成,而在其他基于参与者的系统中,可以查询围绕事件源的参与者抽象。

据我了解,选项 2 可以提供更好的性能,因为可以批量查询事件,而不是单独重播给所有侦听器。这些只是我的观察,还没有任何实际经验可以借鉴。

于 2015-01-27T06:53:00.847 回答