小编Ale*_*ebo的帖子

在使用事件采购的分布式系统中存储事件的位置?

鉴于您有多个系统,这些系统由事件集成,并且所有系统都使用事件源.你在哪里存储活动?

在我的情况下,我有三个系统:

  • 一个网站,这是一个商店
  • 本网站的后端,用于管理客户,产品等.
  • 会计系统

每当域事件发生在其中一个系统中时,事件就会被发布,并且可以由其他系统处理.所有系统都使用事件采购.

我想知道你会在哪里保存这些活动.当然,每个系统都必须存储它处理的所有事件,因为它正在使用事件源,因此它依赖于它曾经处理过的事件.

但是那些不需要的其他事件又因此系统没有订阅呢?我正在努力解决需求可能发生变化的问题,这样系统就必须处理过去没有持续存在的事件.如果系统需要处理它们在发生时未订阅的事件,您会从哪里获得这些事件?

我认为此时不使用事件采购的系统存在很大差异.如果你必须在依赖于数据的系统A中实现一个功能,这个功能在A中是不可用的,而在另一个系统B中,并且你通过像NHibernate这样的ORM工具持久保持当前状态,你可以简单地将数据从A导入到B由于使用事件源的系统依赖于事件来获取当前状态,因此您必须导入过去错过但现在需要的所有事件.

对我来说,这个问题有几种不同的方法.

  1. 每个系统都会保存发布的所有事件.这使您能够在需要时重新发布事件或将其导入另一个系统.
  2. 每个系统都会保存所有发生的事件,甚至是那些不需要处理的事件.
  3. 来自所有系统的所有事件都存储在中央事件日志中.如果您需要处理过去发生但未订阅的事件,可以从此处导入.

你是如何处理这种情况的?你在哪里保存你的活动?

编辑

感谢Roy Dictus的回答.我还不确定如何处理以下情况:

该网站发布事件CustomerRegistered,CustomerPurchasedProduct和CustomerMarkedProductAsFavorite.在当前版本的后端中,客户需要显示并且必须显示他们的购买.在该版本的系统中,标记为收藏的客户不感兴趣.因此,后端仅订阅了CustomerRegistered和CustomerPurchasedProduct.

现在营销部门还希望在客户详细信息页面上显示有关喜爱产品的信息.由于后端未订阅CustomerMarkedProductAsFavorite,因此后端不提供此信息.我从哪里获得这些信息?

messaging cqrs event-sourcing

7
推荐指数
1
解决办法
1466
查看次数

NServiceBus是否适合跨平台集成?

如果你想将.NET应用程序与用Python等语言编写的其他应用程序集成在Linux上,那么NServiceBus是否适合?

当然,您必须将MSMQ替换为ActiveMQ或RabbitMQ等其他排队解决方案.我已经读过这是可能的.但它真的可行且稳定吗?

除此之外,NServiceBus对基本场景(如持久订阅的pub/sub)实施了多少魔力,您必须在其他语言中重新实现.

如果NServiceBus不合适,你会推荐什么?

messaging nservicebus

4
推荐指数
1
解决办法
2463
查看次数

JOliver EventStore - 如何访问所有存储的事件?

如何访问EventStore中的所有存储事件以重建我的读取模型?

GetFrom在问题J Oliver EventStore V2.0问题中提到了一个调用的方法,但我在从Wireup返回的接口"IStoreEvents"上找不到这个方法.

cqrs event-sourcing event-store

3
推荐指数
1
解决办法
622
查看次数