问题标签 [event-sourcing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6528 浏览

mongodb-.net-driver - 未知的鉴别器值“MyEvent”

在joliver/EventStore中使用 MongoDB 持久性引擎导致错误Unknown discriminator value 'MyEvent'。该问题仅在我尝试加载所有事件以重播事件时引起,例如this.storeEvent.Advanced.GetFrom(new DateTime(2010, 1,1))

问题是在 ExtensionsMethods.cs 中引起的

我的配置是这样的:

但是已经尝试了几乎所有类型的序列化程序选项。

0 投票
4 回答
3248 浏览

nosql - 文档/NoSQL 数据库是否适合存储资产负债表?

如果我要创建一个基本的个人会计系统(因为我就是这样 - 这是一个关于我足够熟悉的领域的爱好项目,以避免陷入需求),像 RavenDB 这样的 NoSQL/文档数据库会是存储帐户的好人选,更重要的是,存储针对这些帐户的交易?如何选择哪个实体是“文档”?

我怀疑这是其中一种情况,实际上是 SQL 数据库正确的选择,而尝试使用 NoSQL 是错误的,但是当我想到我对 CQRS 和事件溯源知之甚少时,我想知道实体/文档是否是实际上是Account,事务是针对它存储的事件,当这些“事件”发生时,也许我的应用程序也会写入一个易于查询的读取存储,如 SQL 数据库。

提前谢谢了。

0 投票
1 回答
1737 浏览

cqrs - 基于时间的 Sagas 和事件溯源

假设我想要一个由某个事件创建的 saga,然后坐下来等待几个小时,如果没有任何反应,就发出一些命令。

现在,如果这个 Saga 都在内存中并且我必须重新启动应用程序/服务器,那么这个 saga 将被卸载并且再也见不到了,对吧?

一旦系统重新上线,我会使用事件溯源来加快这个 Saga 的速度吗?

如果是这样,我几乎需要一个带有“活动 saga”的单独事件存储,可以在系统启动时重播,以使我的 Sagas 跟上速度。到目前为止,这对我来说似乎很好,但我将如何实现超时?

我需要某种方式来“伪造”重播时的超时,考虑到可能会有几个后续超时,具体取决于进入传奇的事件。

0 投票
1 回答
282 浏览

c# - 内存中事件溯源算法 - 对吗?它是线程安全的吗?

为这个问题的轻微投机性质道歉。

我正在使用内存中的静态对象编写 Cms 来保存系统的当前状态,并使用 Event Sourcing 创建一个事件日志,我可以使用它来重建对象状态,并提供回滚等(请参阅http://martinfowler.com/articles/lmax.html如果你不知道我在说什么)

除了在执行或重建需要很长时间时可能会堆积大量写入以及可能使用大量内存之外,这是否存在任何错误,尤其是与并发相关的错误?

0 投票
1 回答
552 浏览

event-sourcing - EventStore 3.0 和发布事件

那么通过 Event Store 3.0 发布事件的推荐方式是什么?假设我像这样连接 EventStore:

其中“DispatchCommit”如下所示:

我可以看到已提交的事件按预期触发。但是,ES 2.0 将 IContainer 传递到消息调度程序中,我可以解析总线实例并发送事件。我应该使用实现 IDispatchCommits 的类吗?

有任何想法使用 ES 3.0 的人吗?

0 投票
1 回答
174 浏览

cqrs - 在 JO 的 CommonDomain 中调度 AR 版本及其事件

我正在寻找将我的聚合的当前版本传达给读取模型的正确方法。目前我看到的唯一可能性是执行以下操作:

我不喜欢它,因为我认为 Aggregate 应该自动将 AR 版本分派给所有读取端事件处理程序。

我还有其他方法可以做到这一点吗?

0 投票
2 回答
437 浏览

cqrs - 带有 ES 的 CQRS 中的命令和事件的意图

我的问题与有关。虽然相关的问题和答案显示了我们为什么要将它们分开,但我想确保我对意图的理解是正确的。在我见过的所有示例中,命令的目的似乎是它可以被拒绝,并且它会更新内存中的对象,然后事件将更新数据库。现在我知道我在这里过分简化了,但是理解命令是为了更新内存而事件更新数据库是否正确?如果没有,有人可以为我澄清一下。

我正在尝试学习这些模式,这就是我目前掌握它的方式,我想确保它是正确的。提前致谢。

0 投票
2 回答
410 浏览

event-sourcing - EventStore 3.1 - SQL Persistence - 如何使用非 dbo 模式?

对于我正在进行的项目,我不能使用 [dbo] 模式。通过查看 EventStore 源,使用非 dbo 模式看起来并不简单。

到目前为止,我想出的最好的方法是使用这样的自定义方言:

  • 子类 CommonSqlDialect
  • 添加 MsSqlDialect 的私有实例
  • 然后覆盖 CommonSqlDialect 的所有虚拟属性以执行类似的操作

例子:

我还必须自定义 InitializeStorage 属性以将“sysobjects”替换为“sys.objects”,这样我就可以在模式名称上添加额外的约束。

这可行,但似乎应该有用于自定义模式和表名的连接选项。

有没有更好的方法来处理我错过的这个问题?

0 投票
1 回答
212 浏览

cqrs - 在分布式架构中创建快照

我正在考虑问题标题中的问题:如果我必须在分布式架构中查询聚合,其中分布式事件存储最终可以等待最后一个事件被分发..我怎么知道聚合我是通过读取模式读取不会被网络另一台服务器中的更新模式取代?

我有一个接收事件以保存在商店中的 http 服务器。商店实际上并不存在,但我想尽快实施。事件涉及以 json 格式序列化的巨大聚合需要 4MB

另一个子问题是您为快照推荐什么存储?

编辑

我不明白问题是写得不好还是我选择了错误的标签......

0 投票
2 回答
787 浏览

c# - 如何在 Jonathan Oliver 的 EventStore 中获取使用连接字符串配置的 SqlPersistence 实例?

下面的代码将为命名连接创建事件存储。

我需要类似的东西:

我发现最简单的方法是创建自定义 IConnectionFactory,但这看起来不正确。有什么建议么?