2013-06-25 28 views
1

我们有一个CQRS项目,并且正在考虑一种实施“追赶”的方法,例如,一个新的事件处理程序开始并告诉该事件库重播他所有的事件。CQRS - 重新发布活动

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

这里最好的做法是什么?

+0

你可以添加一些更多的细节?至于问题是什么,我有点失落。 –

+1

简而言之:CQRS - >新的读取模型安装 - >读取模型的事件处理程序需要从头开始接收所有事件以填充读取模型 - >从事件存储库中检索所有事件的最佳实践:-) –

+0

每个阅读模型都是一个复制品吗? –

回答

0

我听说过的人做了以下内容:

  1. 有重放/转播事件的系统。已经产生已经看到这些事件的投影的事件处理程序忽略事件。
  2. 允许事件处理程序在重置它或从头开始新投影时直接查询事件。这可以在一些系统中通过直接从事件存储库中读取并且在其他基于演员的系统中进行,可以查询围绕事件源的演员抽象。

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