问题标签 [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 - J Oliver EventStore - Saga 示例
我想知道是否有关于使用 Saga 和 EventStore 的文档/指南。我的部分困惑是,当您考虑使用像 NServiceBus 或 MassTransit 这样的服务总线时,也会有 Saga 的概念。我知道 EventStore 本身在代码中没有 Saga,但 CommonDomain 项目有并且它们一起工作。我是使用 CommonDomain/EventStore 中的 Saga 基础架构还是依赖 ServiceBus Saga 支持?或者两者可以一起使用?
c# - 使用 joliver commondomain/eventstore 测试域的示例
我正在寻找使用 JOlivers CommonDomain 和 EventStore 测试域的好例子
我一直在看 greg youngs 的视频,他有一个很好的简单抽象聚合根测试装置。
有什么可以与这些库一起使用的东西吗?
cqrs - JOliver 的 EventStore:使用 ServiceStack 序列化程序时无法读取事件
使用 ServiceStack 时,EventMessage.Body 不会反序列化回原始对象。相反 EventMessage.Body 是一个 JSON 字符串。
重现:
- 打开 EventStore 项目并导航到 EventStore.Example 项目
- 将 EventStore.Serialization.Json 引用替换为对 EventStore.Serialization.ServiceStack 的项目引用
- 关闭 EventStore.Example 项目上的程序集签名
- 将 MainProgram.WireupEventStore 更改为 .UsingServiceStackJsonSerialization()
- 在 MainProgram.Main() 的末尾附近添加以下代码:
-
cqrs - 如何使用 EventStore 在 praxis 中构建新的应用程序视图?
是的,之前至少有人问过类似的问题。因此我知道答案:您只需在新处理程序上重播事件,很简单。但是尝试实际实施会引发一些问题。
我正在使用 JOlivier 的 EventStore,它看起来不错。对于初学者,我将忽略 SnapShots 的概念,而只是寻找一种方法来获取我的事件。我能做的就是这段代码:
这里的第一个问题当然是:这是这样做的方式吗?我在使用“GetFrom”参数时遇到问题,因为它只是一个 DateTime,我不能确定所有服务器在时间上都是同步的。如果一台服务器上的时钟比另一台服务器晚 1 分钟怎么办?还是½小时?我也在使用 NServiceBus,所以新的处理程序队列会从某个时间点开始堆积事件 - 但我怎么能 100% 确定这里没有 10 秒丢失?请告诉我如何在 100%(不是 99%)确保新应用程序视图在启动时完全同步的同时从 EventStore 中获取事件。
另外:您是否在代码中创建了特殊的导入方法?我的意思是,假设我的新应用程序中的处理程序在处理“SomeDomainEvent”时发送了一封电子邮件。我不希望它为所有 10.000 个旧事件发送电子邮件。您如何在实践/代码中执行此“导入”?
cqrs - 如何使用 JOliviers 的 CommonDomain 和 EventStore 获取聚合列表?
CommonDomain 中的存储库仅公开“GetById()”。那么,如果我的处理程序需要一个客户列表,例如,该怎么办?
cqrs - NES(.NET 事件溯源)事务失败?
我正在尝试 NES 0.3 (https://github.com/elliotritchie/NES),但在理解会发生什么时遇到了一些麻烦。我正在运行示例应用程序,其中我已将 EventStore 配置更改为 SQL 服务器,并在执行离开 SendMessageCommandHandler.Handle() 之前插入了一个异常。
然后我启动处理程序和网站。我创建了一个运行良好的新用户。在我的 EventStore 表中注册了一个事件。然后我尝试发送消息。由于我的异常,这失败了。因此,由于总线的事务性质,没有调度 NServiceBus 事件。但是在 EventStore 中,事件被注册并标记为dispatched=1。
我错过了什么?当它没有被 NServiceBus 调度时,它肯定不应该被注册为调度吗?错误队列中的唯一消息是“SendMessageCommand”。这可能是我的理解是错误的,所以我想在向作者报告这个问题之前先在这里问一下。
nservicebus - 如何在 CommonDomain 和 NEventStore 中使用接口作为事件?
我正在使用带有 NServiceBus 的JOlivers CommonDomain 和 EventStore 进行测试。我需要像这样在我的聚合中引发一个事件:
然后我有这个处理程序:
不幸的是,这不起作用。我收到一个异常:“CommonDomain.Core.HandlerForDomainEventNotFoundException:'Phone' 类型的聚合引发了 'IPhoneNumberChanged' 类型的事件,但找不到处理程序来处理消息。”。
这里的问题是从“bus.CreateInstance”创建的对象,因为它适用于纯具体的类。但我需要我的事件作为接口。这可以解决吗?
编辑:请注意 - 我不必使用“bus.CreateInstance”来创建对象,这只是我目前必须提高“IPhoneNumberChanged”的最简单(唯一)的方法。任何其他方式也很好——只要我在处理程序中有一个接口作为参数。
cqrs - J Oliver EventStore/CommonDomain SagaBase
为什么 SagaBase 在 Jonathan Oliver 的 CommonDomain 库中是泛型的?
cqrs - NEventStore CommonDomain:为什么 EventStoreRepository.GetById 在聚合不存在时打开一个新流?
请解释在聚合不存在时使 EventStoreRepository.GetById 创建新流的原因。这种行为似乎赋予 GetById 双重责任,在我的情况下可能会导致不良结果。例如,我的聚合总是为它们的创建实现一个工厂方法,以便它们的第一个事件导致聚合 ID 的设置。如果在聚合存在之前处理了一个命令,即使聚合没有设置它的 Id 或初始化其他状态(crash-n-burn 与空引用异常同样可能),它也可能成功。
如果聚合不存在以防止过早创建和命令处理,我宁愿让 GetById 抛出异常。
mongodb-.net-driver - 未知的鉴别器值“MyEvent”
在joliver/EventStore中使用 MongoDB 持久性引擎导致错误Unknown discriminator value 'MyEvent'
。该问题仅在我尝试加载所有事件以重播事件时引起,例如this.storeEvent.Advanced.GetFrom(new DateTime(2010, 1,1))
问题是在 ExtensionsMethods.cs 中引起的
我的配置是这样的:
但是已经尝试了几乎所有类型的序列化程序选项。