问题标签 [neventstore]
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.
cqrs - CommonDomain/EventStore 接口获取
我想通过它实现的接口访问我的聚合根:
我需要告诉 CommonDomain 或 EventStore 什么来完成此操作?我相信我的 IConstructAggregates 接收到存储事件的聚合的实现类型。我是否需要保留自己的 ID 地图。
例如,假设我有这些 agg 根:
我已经保存了一个具有 'idFromAggRoot1' 的 aggregate1 实例。现在我想这样获取:
既然 IInterface1 有两个实现者,我怎么知道以后应该创建什么?聚合根1?聚合根2?接口1?Activator 会在这里轰炸,所以我知道我需要实现 IConstructAggregates 但想知道是否还有其他描述符可以告诉我原始提交 agg 根类型是什么。
azure-sql-database - 如何配置 EventStore 以使用 SQL Azure 作为存储?
我正在寻找如何配置 Jonathan Oliver 的 EventStore 以使用 SQL Azure 的示例。任何帮助,将不胜感激。谢谢。
cqrs - JOlivier EventStore 的 StreamRevision 和 CommitSequence 的区别和用法?
在查看 JOlivers“EventStore”时,我发现如果您只提交 1 个事件,StreamRevision 和 CommitSequence 是相同的。它是用于选择事件的 StreamRevision。
假设我首先创建了一个聚合 1 个事件。之后,committed 10 事件将使我的 SQL 数据库表看起来像这样(简化):
我有两个问题源于此:
这是StreamRevision 和 CommitSequence 之间的区别吗?
该商店公开了一个“GetFrom”方法,该方法采用“minRevision”和“maxRevision”。使用上面的数据,如果我请求 minRevision=4 和 maxRevision=8 ,这将如何工作?不应该是“minSequence”和“maxSequence”吗?
谢谢。
维尔纳
cqrs - NCQRS 与 JOliver EventStore
有人评估过 NCQRS 和 JOliver 的 EventStore 吗?两者之间是否有显着优势,或者它们是否针对不同的受众?
我所看到的:
NCQRS 内置了对 NServiceBus 的支持。不确定受支持的 NSB 版本,但 NSB 的许可更改使这成为我项目的一个问题。不要以为我想永远被 NSB 2.1 困住。我可能会更多地关注 MassTransit 或 RSB。NCQRS 似乎也有相当多的“入门”帮助,对于像我这样的新手来说,这是值得赞赏的。
EventStore 似乎具有总线机制的挂钩,但没有内置实现(可能是错误的)。EventStore 似乎在 3.0 版本中有相当多的近期活动,但除了一些简短的代码示例和我发现的播客之外,似乎没有太多帮助,尤其是对初学者来说,除了筛选堆栈溢出或组。
如果有现有的比较,请指出我的方向。如果我上面的假设不正确,请纠正我。
cqrs - 内存中的 NEventStore 和 Sqlite
我正在尝试使用 JSON 序列化和在内存模式下运行的 Sqlite 对 EventStore 持久性进行单元测试。我在 EventStore 初始化期间收到“没有这样的表:提交”异常。我假设这是因为 EventStore 以某种方式关闭连接并打开一个新连接,导致它看到一个新的内存中 Sqlite 实例(没有提交表)。有什么办法可以使这项工作?
event-sourcing - EventStore 3.0 和发布事件
那么通过 Event Store 3.0 发布事件的推荐方式是什么?假设我像这样连接 EventStore:
其中“DispatchCommit”如下所示:
我可以看到已提交的事件按预期触发。但是,ES 2.0 将 IContainer 传递到消息调度程序中,我可以解析总线实例并发送事件。我应该使用实现 IDispatchCommits 的类吗?
有任何想法使用 ES 3.0 的人吗?
cqrs - NEventStore SqlPersistence GetFrom 分页
我在我的 EventSTore 中流式传输所有事件:
将分页保持在默认值 128 会限制在 2989 处获取的事件数量。当我将分页大小增加到 9000 时,我会按预期获得所有事件(大约有 7K 事件)。
确保我收到所有事件的最佳方法是什么?即重建视图模型时?
顺便说一句,我仍在使用 ES 2.0 谢谢!
transactions - 使用 JOliver EventStore 更新多个聚合
我有一个关于使用JOliver 的 Event Store在单个事务中更新多个聚合的问题。据我了解,每个聚合都应该有自己的事件流。现在,虽然许多命令处理程序只会加载单个聚合并只更新该聚合(即为这些聚合保存事件),但我可以想象会有需要更新多个聚合的命令处理程序。当然,我想以交易的方式做到这一点。
但是,我不知道如何使用 Event Store 做到这一点。通过调用CommitChanges()
事件流来存储事件。如果我们有多个要更新的聚合,将有多个事件流,因此会多次调用CommitChanges()
. 使该事务具有事务性的唯一方法是将其包装在 中TransactionScope
,但这没有多大意义,因为底层存储技术可能不支持事务。所以我最终得到了这段代码,这绝对不是我想要的:
这让我觉得我完全错过了应该如何使用 Event Store 的一些东西。有人可以帮我吗?非常感谢!
cqrs - 在 JO 的 CommonDomain 中调度 AR 版本及其事件
我正在寻找将我的聚合的当前版本传达给读取模型的正确方法。目前我看到的唯一可能性是执行以下操作:
我不喜欢它,因为我认为 Aggregate 应该自动将 AR 版本分派给所有读取端事件处理程序。
我还有其他方法可以做到这一点吗?
cqrs - EventStore 事件的部分排序和其他功能
我正在尝试将EventStore评估为服务器软件内部的可靠排队机制。
MSMQ 作为替代方案失败了,因为它不能支持部分排序,消息“对话”中的有序消息。并且由于它的 4MB 消息大小限制(可以通过部分排序来克服)。SQL Service Broker 确实支持部分排序,但是以编程方式设置和管理是一件麻烦事。
由于 EventStore 的文档确实很少,有 EventStore 经验的人可以提供以下帮助吗?
- EventStore 是否支持事件的事务处理——也就是说,如果处理失败,出队是否可以回滚?
- 在不同的线程、进程或机器中有多个读取器,EventStore 是否强制每个事件被分派(?)到只有一个读取器(一次,可能在事务期间)
- 假设上述情况是可能的,不同“对话”中的事件是否可以按任何顺序同时阅读,而同一对话中的消息可以单独按顺序阅读?
- 我读到 EventStore 基本上是“至少一次”交付。是否有可能使用某些存储提供商来确保“精确一次”交付?
- “毒”事件如何处理?处理期间出错的事件。也许错误本质上是暂时的,可以重试。也许它本质上是永久性的,需要行政干预。
- 如有必要,是否可以手动操作 EventStore 存储?可以在其他读者继续阅读的同时完成吗?
(我读到存储引擎中的事务不是必需的,但我仍然使用事务的语言来表示在 EventStore 级别替换事务的任何内容。如果在从事务切换到任何内容时有关键的功能后果,请评论它们.我不需要马上了解每一个方面,只需要希望能有更多的时间去尝试。)