问题标签 [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.

0 投票
2 回答
3016 浏览

cqrs - CQRS/EventStore:如何检查聚合是否存在?

我目前正在使用 J Oliver 的 EventStore,我想知道如何在调用时检查聚合是否存在 (GetById(Guid id))?

按照 CQRS 的工作原理,我应该查询读取的数据库还是应该以某种方式找出 EventStore 中是否存在相应的聚合?

0 投票
1 回答
589 浏览

cqrs - 我应该如何在 EventStore 中使用 streamId?

在 J Oliver 的 EventStore 中,打开流时我应该如何使用 streamId?

我是否应该为每个对象/聚合根对象创建一个新的流/流 ID?

那么我认为应该是 ar 对象的我的订单状态对象应该每个都有一个流 ID 吗?

0 投票
1 回答
469 浏览

domain-driven-design - CQRS/EventStore - 将 GUIDS 传递给 UI?

我目前正在使用 J Oliver 的 EventStore,据我所知,它使用 Guids 作为 Stream ID,这就是用来构建我的聚合根的。

从 CQRS 的角度和 DDD 的角度来看,我应该考虑域而不是 GUID。

所以,如果我做一个 GET(Mvc 客户端),我是否正确地说我的 URL 应该具有我的域对象(聚合根)的身份,并且我从读取存储中获取 GUID,然后用于构建我的来自事件存储的聚合根?

还是应该将 GUID 传递给我的表单并将它们作为隐藏的表单变量传回?至少这样我知道聚合根 id 并且不必查询读取存储?

我想第一种方法是正确的方法(不在表单中使用 GUID),因为我所有的 Gets 和 POSTS 都处理域对象的身份,而不是客户端不知道的 GUIDS。

我想这也允许我构建基于 REST 的 API,它专注于资源及其身份,而不是系统生成的 GUIDS。如果我错了请纠正我

0 投票
4 回答
2054 浏览

java - 是否有 Java 端口或等效的 NEventStore 库?

我已经阅读了Jonathan Oliver的 .NET EventStore库,我必须说这个概念对我很有吸引力:只有一个简单的无依赖库,它是非侵入性的,只专注于事件源,留下了很多在选择数据库、消息传递等技术时的自由度。

我的问题:Java 世界中是否也有类似的东西?我知道有各种与 CQRS 相关的框架,比如AxonJdon,但它们所做的不仅仅是事件溯源......也许有人在一个简单的端口上工作吗?

0 投票
1 回答
418 浏览

nservicebus - CQRS/NES - 深入了解示例项目的工作原理?

我刚刚查看了使用 EventStore 和 NServiceBus 进行 CQRS 的 NES。

到目前为止,我什至没有看过 NServiceBus。

为 NES 提供的示例项目有一个 MVC 客户端,它与 NServiceBus 交互,从用户的域中引发或发布事件......等等。

正如你所知道的,我对什么和谁叫什么、谁发送、谁发布以及谁订阅有点困惑。

如果有人可以向我介绍示例项目的工作原理,那将是进入 NES 和 NSB 的良好开端?

谢谢

京东

附言。NES 项目看起来很棒,现在需要建立我的理论来理解它是如何工作的。

0 投票
2 回答
230 浏览

asp.net-mvc - 如何防止 ASP.net WP 因错误而终止

我的 ASP.net MVC 项目中有一些代码可以异步发送消息。在某些情况下,该代码可能会失败并导致未处理的异常。我无法直接访问引发异常的代码或生成线程的代码,因此我无法在那里捕获和处理错误。我尝试在 Global.asax 中的 Application_Error 级别进行捕获,但该函数仅针对页面错误而不是后台错误引发。我还尝试通过实现 OnUnhandledException 来捕获 HTTP 模块,但我找不到捕获异常并阻止工作进程存在于其中的方法。

有没有办法防止这些错误变得如此致命?我知道它们是严重的错误,应该得到处理,但我希望它们不要为其他页面上的其他用户终止工作进程。

更多细节:

消息调度程序是 EventStore,我相信我在这种情况下遇到的问题是它试图反序列化从以前版本的 NServiceBus 实现 ICommand 的消息。更新到最新的测试版后,反序列化似乎失败了。不幸的是,我愚蠢地删除了导致错误的提交,因此我无法完全复制该问题。

到目前为止,我发现模拟错误的最佳方法是

您会注意到 snap 异常被抛出并被正确处理而不会引起问题。但是,如果您等待,那么我们没有观察到 Task 的异常属性的事实最终会杀死整个应用程序。

针对 Cassini 进行了测试,但在 IIS 7.5 上看到了类似的行为。

0 投票
1 回答
1536 浏览

c# - CQRS/EventStore 幂等性?

使用 Jolivers EventStore 在 c# 中实现/处理幂等性。这是否意味着在处理之前只需检查域/读取模型旁边的聚合 ID 和版本?或者还有更多的东西吗?

[编辑]

我问的原因是,例如,我想以小功能块开发我的应用程序。

所以 - 想象一下我有一个包含在线商店产品数据的某种类型的数据集。我想通过创建搜索产品的能力来开始开发应用程序。这意味着以某种方式导入数据集(不管如何)。数据集中的每个产品最终都会触发(例如)一个 CreateProductCommand - 此命令通过触发 ProductAddedEvent 的域,然后由非规范化程序处理以填充 ProductSearchView

现在 - 实现搜索功能后,我想创建产品详细信息视图。我已经运行了导入以将数据集导入系统,因此我想重新运行将触发非规范化器以填充 ProductDetailView 的事件

那有意义吗?

0 投票
1 回答
457 浏览

json.net - 如何在 JOliver EventStore 中自定义 JSON 序列化?

JOliver EventStore 3.0与 Json 序列化插件一起使用,我在配置期间调用它,如下所示:

它工作正常,但我不知道如何自定义序列化。它在后台使用 Json.Net,所以我应该能够调整序列化,例如添加 ISODateTimeConverter。

EventStore 是否以任何方式公开序列化程序,以便我可以调整它?

Raven 使用 documentStore.Conventions.CustomizeJsonSerializer 做到这一点。EventStore 是否已经有类似的东西了?

0 投票
1 回答
1265 浏览

nservicebus - 是什么导致 EventStore 如此轻易地抛出 ConcurrencyException ?

使用JOliver EventStore 3.0,并从简单示例开始。

我有一个使用 NServiceBus 的简单 pub/sub CQRS 实现。客户端在总线上发送命令,域服务器接收并处理命令并将事件存储到事件存储,然后由事件存储的调度程序在总线上发布。读取模型服务器然后订阅这些事件以更新读取模型。没有什么花哨的,几乎是按部就班的。

它正在工作,但只是在简单的测试中,当事件存储到 EventStore 时,我在域服务器上(间歇性地)收到很多并发异常。它会正确重试,但有时会达到 5 次重试限制,并且命令最终会出现在错误队列中。

我可以从哪里开始调查以查看导致并发异常的原因?我删除了调度程序,只专注于存储事件,它也有同样的问题。

我正在使用 RavenDB 来持久化我的 EventStore。我没有做任何花哨的事情,只是这样:

异常的堆栈跟踪如下所示:

2012-03-17 18:34:01,166 [Worker.14] WARN NServiceBus.Unicast.UnicastBus [(null)] <(null)> - EmployeeCommandHandler 处理消息失败。EventStore.ConcurrencyException:引发了“EventStore.ConcurrencyException”类型的异常。在 c:\Code\public\EventStore\src\proj\EventStore.Core\OptimisticPipelineHook.cs: 第 55 行的 EventStore.OptimisticPipelineHook.PreCommit(提交尝试) 在 c:\Code\ 中的 EventStore.OptimisticEventStore.Commit(提交尝试) public\EventStore\src\proj\EventStore.Core\OptimisticEventStore.cs:第 90 行,位于 c:\Code\public\EventStore\src\proj\EventStore.Core\OptimisticEventStream.cs 中的 EventStore.OptimisticEventStream.PersistChanges(Guid commitId): c:\Code\public\EventStore\src\proj\EventStore 中 EventStore.OptimisticEventStream.CommitChanges(Guid commitId) 的第 168 行。

0 投票
1 回答
355 浏览

nservicebus - 在 EventStore 中处理并发异常的正确方法是什么?

使用 JOliver EventStore 3.0 并从 NServiceBus 接收命令,处理并发异常的正确方法是什么?如果我有多个工作线程,这可能是一种常见的情况。

选项1

选项 2

让它返回到 NServiceBus 并使用配置中的 MsMqTransportConfig.MaxRetries 选项重试。

选项 3

我没有想到的东西?