问题标签 [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 - CQRS/EventStore:如何检查聚合是否存在?
我目前正在使用 J Oliver 的 EventStore,我想知道如何在调用时检查聚合是否存在 (GetById(Guid id))?
按照 CQRS 的工作原理,我应该查询读取的数据库还是应该以某种方式找出 EventStore 中是否存在相应的聚合?
cqrs - 我应该如何在 EventStore 中使用 streamId?
在 J Oliver 的 EventStore 中,打开流时我应该如何使用 streamId?
我是否应该为每个对象/聚合根对象创建一个新的流/流 ID?
那么我认为应该是 ar 对象的我的订单状态对象应该每个都有一个流 ID 吗?
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。如果我错了请纠正我
java - 是否有 Java 端口或等效的 NEventStore 库?
我已经阅读了Jonathan Oliver的 .NET EventStore库,我必须说这个概念对我很有吸引力:只有一个简单的无依赖库,它是非侵入性的,只专注于事件源,留下了很多在选择数据库、消息传递等技术时的自由度。
我的问题:Java 世界中是否也有类似的东西?我知道有各种与 CQRS 相关的框架,比如Axon和Jdon,但它们所做的不仅仅是事件溯源......也许有人在一个简单的端口上工作吗?
nservicebus - CQRS/NES - 深入了解示例项目的工作原理?
我刚刚查看了使用 EventStore 和 NServiceBus 进行 CQRS 的 NES。
到目前为止,我什至没有看过 NServiceBus。
为 NES 提供的示例项目有一个 MVC 客户端,它与 NServiceBus 交互,从用户的域中引发或发布事件......等等。
正如你所知道的,我对什么和谁叫什么、谁发送、谁发布以及谁订阅有点困惑。
如果有人可以向我介绍示例项目的工作原理,那将是进入 NES 和 NSB 的良好开端?
谢谢
京东
附言。NES 项目看起来很棒,现在需要建立我的理论来理解它是如何工作的。
asp.net-mvc - 如何防止 ASP.net WP 因错误而终止
我的 ASP.net MVC 项目中有一些代码可以异步发送消息。在某些情况下,该代码可能会失败并导致未处理的异常。我无法直接访问引发异常的代码或生成线程的代码,因此我无法在那里捕获和处理错误。我尝试在 Global.asax 中的 Application_Error 级别进行捕获,但该函数仅针对页面错误而不是后台错误引发。我还尝试通过实现 OnUnhandledException 来捕获 HTTP 模块,但我找不到捕获异常并阻止工作进程存在于其中的方法。
有没有办法防止这些错误变得如此致命?我知道它们是严重的错误,应该得到处理,但我希望它们不要为其他页面上的其他用户终止工作进程。
更多细节:
消息调度程序是 EventStore,我相信我在这种情况下遇到的问题是它试图反序列化从以前版本的 NServiceBus 实现 ICommand 的消息。更新到最新的测试版后,反序列化似乎失败了。不幸的是,我愚蠢地删除了导致错误的提交,因此我无法完全复制该问题。
到目前为止,我发现模拟错误的最佳方法是
您会注意到 snap 异常被抛出并被正确处理而不会引起问题。但是,如果您等待,那么我们没有观察到 Task 的异常属性的事实最终会杀死整个应用程序。
针对 Cassini 进行了测试,但在 IIS 7.5 上看到了类似的行为。
c# - CQRS/EventStore 幂等性?
使用 Jolivers EventStore 在 c# 中实现/处理幂等性。这是否意味着在处理之前只需检查域/读取模型旁边的聚合 ID 和版本?或者还有更多的东西吗?
[编辑]
我问的原因是,例如,我想以小功能块开发我的应用程序。
所以 - 想象一下我有一个包含在线商店产品数据的某种类型的数据集。我想通过创建搜索产品的能力来开始开发应用程序。这意味着以某种方式导入数据集(不管如何)。数据集中的每个产品最终都会触发(例如)一个 CreateProductCommand - 此命令通过触发 ProductAddedEvent 的域,然后由非规范化程序处理以填充 ProductSearchView
现在 - 实现搜索功能后,我想创建产品详细信息视图。我已经运行了导入以将数据集导入系统,因此我想重新运行将触发非规范化器以填充 ProductDetailView 的事件
那有意义吗?
json.net - 如何在 JOliver EventStore 中自定义 JSON 序列化?
将JOliver EventStore 3.0与 Json 序列化插件一起使用,我在配置期间调用它,如下所示:
它工作正常,但我不知道如何自定义序列化。它在后台使用 Json.Net,所以我应该能够调整序列化,例如添加 ISODateTimeConverter。
EventStore 是否以任何方式公开序列化程序,以便我可以调整它?
Raven 使用 documentStore.Conventions.CustomizeJsonSerializer 做到这一点。EventStore 是否已经有类似的东西了?
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 行。
nservicebus - 在 EventStore 中处理并发异常的正确方法是什么?
使用 JOliver EventStore 3.0 并从 NServiceBus 接收命令,处理并发异常的正确方法是什么?如果我有多个工作线程,这可能是一种常见的情况。
选项1
选项 2
让它返回到 NServiceBus 并使用配置中的 MsMqTransportConfig.MaxRetries 选项重试。
选项 3
我没有想到的东西?