鉴于您有多个系统,这些系统由事件集成,并且所有系统都使用事件源.你在哪里存储活动?
在我的情况下,我有三个系统:
每当域事件发生在其中一个系统中时,事件就会被发布,并且可以由其他系统处理.所有系统都使用事件采购.
我想知道你会在哪里保存这些活动.当然,每个系统都必须存储它处理的所有事件,因为它正在使用事件源,因此它依赖于它曾经处理过的事件.
但是那些不需要的其他事件又因此系统没有订阅呢?我正在努力解决需求可能发生变化的问题,这样系统就必须处理过去没有持续存在的事件.如果系统需要处理它们在发生时未订阅的事件,您会从哪里获得这些事件?
我认为此时不使用事件采购的系统存在很大差异.如果你必须在依赖于数据的系统A中实现一个功能,这个功能在A中是不可用的,而在另一个系统B中,并且你通过像NHibernate这样的ORM工具持久保持当前状态,你可以简单地将数据从A导入到B由于使用事件源的系统依赖于事件来获取当前状态,因此您必须导入过去错过但现在需要的所有事件.
对我来说,这个问题有几种不同的方法.
你是如何处理这种情况的?你在哪里保存你的活动?
编辑
感谢Roy Dictus的回答.我还不确定如何处理以下情况:
该网站发布事件CustomerRegistered,CustomerPurchasedProduct和CustomerMarkedProductAsFavorite.在当前版本的后端中,客户需要显示并且必须显示他们的购买.在该版本的系统中,标记为收藏的客户不感兴趣.因此,后端仅订阅了CustomerRegistered和CustomerPurchasedProduct.
现在营销部门还希望在客户详细信息页面上显示有关喜爱产品的信息.由于后端未订阅CustomerMarkedProductAsFavorite,因此后端不提供此信息.我从哪里获得这些信息?
如果你想将.NET应用程序与用Python等语言编写的其他应用程序集成在Linux上,那么NServiceBus是否适合?
当然,您必须将MSMQ替换为ActiveMQ或RabbitMQ等其他排队解决方案.我已经读过这是可能的.但它真的可行且稳定吗?
除此之外,NServiceBus对基本场景(如持久订阅的pub/sub)实施了多少魔力,您必须在其他语言中重新实现.
如果NServiceBus不合适,你会推荐什么?
如何访问EventStore中的所有存储事件以重建我的读取模型?
GetFrom在问题J Oliver EventStore V2.0问题中提到了一个调用的方法,但我在从Wireup返回的接口"IStoreEvents"上找不到这个方法.