问题标签 [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 投票
1 回答
3489 浏览

cqrs - J Oliver EventStore - Saga 示例

我想知道是否有关于使用 Saga 和 EventStore 的文档/指南。我的部分困惑是,当您考虑使用像 NServiceBus 或 MassTransit 这样的服务总线时,也会有 Saga 的概念。我知道 EventStore 本身在代码中没有 Saga,但 CommonDomain 项目有并且它们一起工作。我是使用 CommonDomain/EventStore 中的 Saga 基础架构还是依赖 ServiceBus Saga 支持?或者两者可以一起使用?

0 投票
4 回答
2184 浏览

c# - 使用 joliver commondomain/eventstore 测试域的示例

我正在寻找使用 JOlivers CommonDomain 和 EventStore 测试域的好例子

我一直在看 greg youngs 的视频,他有一个很好的简单抽象聚合根测试装置。

有什么可以与这些库一起使用的东西吗?

0 投票
1 回答
342 浏览

cqrs - JOliver 的 EventStore:使用 ServiceStack 序列化程序时无法读取事件

使用 ServiceStack 时,EventMessage.Body 不会反序列化回原始对象。相反 EventMessage.Body 是一个 JSON 字符串。

重现:

  1. 打开 EventStore 项目并导航到 EventStore.Example 项目
  2. 将 EventStore.Serialization.Json 引用替换为对 EventStore.Serialization.ServiceStack 的项目引用
  3. 关闭 EventStore.Example 项目上的程序集签名
  4. 将 MainProgram.WireupEventStore 更改为 .UsingServiceStackJsonSerialization()
  5. 在 MainProgram.Main() 的末尾附近添加以下代码:

-

0 投票
1 回答
513 浏览

cqrs - 如何使用 EventStore 在 praxis 中构建新的应用程序视图?

是的,之前至少有人问过类似的问题。因此我知道答案:您只需在新处理程序上重播事件,很简单。但是尝试实际实施会引发一些问题。

我正在使用 JOlivier 的 EventStore,它看起来不错。对于初学者,我将忽略 SnapShots 的概念,而只是寻找一种方法来获取我的事件。我能做的就是这段代码:

这里的第一个问题当然是:这是这样做的方式吗?我在使用“GetFrom”参数时遇到问题,因为它只是一个 DateTime,我不能确定所有服务器在时间上都是同步的。如果一台服务器上的时钟比另一台服务器晚 1 分钟怎么办?还是½小时?我也在使用 NServiceBus,所以新的处理程序队列会从某个时间点开始堆积事件 - 但我怎么能 100% 确定这里没有 10 秒丢失?请告诉我如何在 100%(不是 99%)确保新应用程序视图在启动时完全同步的同时从 EventStore 中获取事件。

另外:您是否在代码中创建了特殊的导入方法?我的意思是,假设我的新应用程序中的处理程序在处理“SomeDomainEvent”时发送了一封电子邮件。我不希望它为所有 10.000 个旧事件发送电子邮件。您如何在实践/代码中执行此“导入”?

0 投票
4 回答
1287 浏览

cqrs - 如何使用 JOliviers 的 CommonDomain 和 EventStore 获取聚合列表?

CommonDomain 中的存储库仅公开“GetById()”。那么,如果我的处理程序需要一个客户列表,例如,该怎么办?

0 投票
2 回答
496 浏览

cqrs - NES(.NET 事件溯源)事务失败?

我正在尝试 NES 0.3 (https://github.com/elliotritchie/NES),但在理解会发生什么时遇到了一些麻烦。我正在运行示例应用程序,其中我已将 EventStore 配置更改为 SQL 服务器,并在执行离开 SendMessageCommandHandler.Handle() 之前插入了一个异常。

然后我启动处理程序和网站。我创建了一个运行良好的新用户。在我的 EventStore 表中注册了一个事件。然后我尝试发送消息。由于我的异常,这失败了。因此,由于总线的事务性质,没有调度 NServiceBus 事件。但是在 EventStore 中,事件被注册并标记为dispatched=1

我错过了什么?当它没有被 NServiceBus 调度时,它肯定不应该被注册为调度吗?错误队列中的唯一消息是“SendMessageCommand”。这可能是我的理解是错误的,所以我想在向作者报告这个问题之前先在这里问一下。

0 投票
1 回答
729 浏览

nservicebus - 如何在 CommonDomain 和 NEventStore 中使用接口作为事件?

我正在使用带有 NServiceBus 的JOlivers CommonDomain 和 EventStore 进行测试。我需要像这样在我的聚合中引发一个事件:

然后我有这个处理程序:

不幸的是,这不起作用。我收到一个异常:“CommonDomain.Core.HandlerForDomainEventNotFoundException:'Phone' 类型的聚合引发了 'IPhoneNumberChanged' 类型的事件,但找不到处理程序来处理消息。”。

这里的问题是从“bus.CreateInstance”创建的对象,因为它适用于纯具体的类。但我需要我的事件作为接口。这可以解决吗?

编辑:请注意 - 我不必使用“bus.CreateInstance”来创建对象,这只是我目前必须提高“IPhoneNumberChanged”的最简单(唯一)的方法。任何其他方式也很好——只要我在处理程序中有一个接口作为参数。

0 投票
1 回答
429 浏览

cqrs - J Oliver EventStore/CommonDomain SagaBase

为什么 SagaBase 在 Jonathan Oliver 的 CommonDomain 库中是泛型的?

0 投票
1 回答
339 浏览

cqrs - NEventStore CommonDomain:为什么 EventStoreRepository.GetById 在聚合不存在时打开一个新流?

请解释在聚合不存在时使 EventStoreRepository.GetById 创建新流的原因。这种行为似乎赋予 GetById 双重责任,在我的情况下可能会导致不良结果。例如,我的聚合总是为它们的创建实现一个工厂方法,以便它们的第一个事件导致聚合 ID 的设置。如果在聚合存在之前处理了一个命令,即使聚合没有设置它的 Id 或初始化其他状态(crash-n-burn 与空引用异常同样可能),它也可能成功。

如果聚合不存在以防止过早创建和命令处理,我宁愿让 GetById 抛出异常。

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 中引起的

我的配置是这样的:

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