event-sourcing相关内容
让我们以一个简单的“帐户注册”示例为例,该流程如下: 用户访问网站 单击“注册”按钮并填写表单,然后单击“保存”按钮 MVC控制器:通过读取ReadModel来验证用户名的唯一性 RegisterCommand:再次验证用户名唯一性(这里是问题) 当然,我们可以验证用户名唯一性通过读取MVC控制器中的ReadModel来改善性能和用户体验。但是,我们仍然需要在RegisterCo
..
我想知道域事件的粒度如何? 例如,我有一些简单的事情,例如更改配置文件中的firstName,secondName和电子邮件地址页。我应该拥有3个不同的域事件还是只有一个? 通过添加新功能时的粗粒度域事件,我必须创建该事件的新版本,因此我必须添加新的事件类型,或将事件版本存储在事件存储中。通过细粒度的域事件,我没有这些问题,但是我有太多的小类。您如何看待,在这种情况下的最佳实践是什么?
..
请说明为什么在进行CQRS,ES和DDD时同时修改多个聚合是一个坏主意。 以诸如PurgeAllCompletedTodos之类的命令为例。我希望此命令导致一个事件,该事件通过将IsActive设置为false来更新每个已完成的Todo聚合的状态。 为什么这样做不好? 我能想到的一个原因: 在更新域状态时,最好将交易限制在定义明确的部分整个状态,因此在更新期间仅此部分需要写
..
当我们具有特定的唯一EntityID时,EventSourcing可以完美地工作,但是当我尝试从除特定EntityId之外的eventStore中获取信息时,我遇到了困难。 我正在使用具有EventSourcing的CQRS。作为事件源的一部分,我们将事件作为列(EntityID(uniqueKey),EventType,EventObject(例如,UserAdded))存储在SQL表中。
..
如果我正在使用RDBMS(例如SQL Server)存储事件源数据,那么该架构将是什么样? 我已经看到抽象中谈到的一些变体 例如,假设某人拥有一个“产品”,实体,并且对该产品的更改可以采用以下形式:价格,成本和说明。我对是否愿意感到困惑: 具有“ ProductEvent”表,具有产品的所有字段,其中每个更改均表示该表中的新记录,以及“谁,什么,在哪里,为什么,何时和如何”。 (
..
前提: 建议在 CQRS + DDD + ES 样式的应用程序中使用基于任务的屏幕,这些屏幕可指导用户并捕获意图。 这些任务屏幕也可以称为归纳用户界面。 UI设计指南的一些示例可以帮助您创建更现代,用户友好的应用程序: Microsoft归纳用户界面指南 ,以及 UX准则索引 按照我的理解,通常来说,任务应该与命令或功能对齐在服务器上等待。 例如,如果用户更改了
..
我正在尝试在 Kafka流之上实现简单的CQRS/事件源概念证明(如 https://www.confluent .io/blog/event-sourcing-using-apache-kafka/) 我有4个基本部分: commands主题,该主题使用聚合ID作为键来按顺序处理每个聚合中的命令 events主题,聚合状态的每个更改都发布到该主题(同样,键是聚合ID).本主题的保留
..
尽管我之前遇到过 Kafka ,但我最近才意识到,Kafka可能被用作( CQRS , Kafka支持的主要观点之一: 事件捕获/存储,当然是所有HA. Pub/sub体系结构 具有重播事件日志的功能,使新订户可以在事件发生后向系统注册. 诚然,我不是100%精通CQRS/事件源,但是这似乎与事件存储应有的程度非常接近.有趣的是:关于Kafka用作事件存储,我真的找不到太多,所以也
..
作为 GetEventStore 的初次用户,并且阅读了文档之后,我遇到了一个问题,即事件永远不会出现在我的文档中订阅客户端. 由于我错过了配置步骤,所以有可能. 具有此控制台应用程序客户端: public class EventStoreSubscriptionClient : ISubscriptionClient { private const string Gro
..
问题: 两名员工(A和B)在编辑客户#123(例如版本20)的同时脱机,而在脱机状态下继续进行更改... 场景: 1-两名员工编辑客户#123,并更改一个或多个相同的属性. 2-两名员工编辑客户#123,但不要进行相同的更改(他们彼此交叉而不接触). ...然后他们都重新上线,首先是员工A追加,从而将客户更改为版本#21,然后将客户B更改为版本20. 问题:
..
我已经写了一个事件源聚合,现在实现了一个事件源Saga ...我注意到两者都是相似的,并创建了一个事件源对象作为派生两者的基类. 我在这里看到了一个演示 http ://blog.jonathanoliver.com/cqrs-sagas-with-event-sourcing-part-ii-of-ii/,但可能会出现问题,因为如果发生进程崩溃,命令可能会丢失因为命令的发送不在写事务之外?
..
尝试通过 以下是我的报道; return Wireup.Init() .UsingRavenPersistence("RavenEventStore") .UsingAsynchronousDispatchScheduler() .DispatchTo(new DelegateMessageDispatcher
..
我正在编写我的第一个EventStore测试应用程序,正在从流中重新填充对象,虽然它正确获取了数字,但标题为null,并且我不明白为什么-从流中的标题设置为null,但我确定它写的很好. 新鲜的眼睛可以看到我在做什么吗? private static void Main() { using (store = WireupEventStore()) { v
..
假设地,我正在使用一个使用“事件采购"(存储业务事件)进行物料买卖的系统;有时会生成一份报告,其中包含价格和成本信息. 想象一下,我的一位客户打电话给我说:“成本错了,对我来说,利润规则就是这种方式." 我可以添加更多处理程序或更改规则以适应这种特殊情况,然后重播事件. 但是我的问题是,这是正确的方法(或者至少是更好的方法)? 解决方案 在事件源系统中,事件是不可变的-发
..
如何访问EventStore中的所有存储事件以重建读取的模型? 在问题 J Oliver EventStore V2.0问题中提到了称为GetFrom的方法,但是在Wireup返回的"IStoreEvents"接口上找不到该方法. 解决方案 该方法是IPersistStreams接口而不是IStoreEvents接口的一部分.需要对API进行一些微调以适应这种情况.我刚刚在IStor
..
我已经转到积极使用CQRS +事件源的项目.乍一看,它是按照所有这些书籍和博客进行实现的,但是最后,我意识到实现的确切意义. 这是CQRS架构: 最初,我是从此处拍摄的这张照片. 如图片所示,读取端从队列接收事件,并将事件逐一传递到不同的投影集(去规范化器)中,然后通过AddOrUpdate方法将生成的ViewModel保存到DB中.因此,据我所知,图片非规范化器只能依赖于事件本
..
我已经阅读了乔纳森·奥利弗(Jonathan Oliver)的这篇不错的文章,内容涉及处理乱序事件. http://blog.jonathanoliver.com/cqrs-out-of-sequence-messages-and-read-models/ 我们使用的解决方案是使一条消息出队,并将其放置在“保存表"中,直到所有具有先前顺序的消息都被处理为止. 已收到.收到所有先前的消息
..
据我在“>为什么是CQRS存储库发布事件,而不是事件存储吗?这是CQRS存储库发布事件的任务.到目前为止,一切都很好. 当然,存储事件和发布事件应该在一个事务中.从技术上讲,这意味着将一个(或多个)记录写入商店,并将一个(或多个)事件发布到消息总线.因此,简单的数据库事务是不够的,它应该是分布式的. 现在,不幸的是,许多NoSQL数据库(例如MongoDB)不支持ACID兼容事务,甚至
..
与事件来源结合使用时,是否存在一种进行CQRS的好方法? 我想到的一种方法是,在命令变成事件并持久保存到事件日志后,在(持久角色的)命令处理程序中执行此操作(这些事件代表Write模型),我将使用事件总线将事件发送给感兴趣的订阅查询参与者,以便他们可以更新其查询模型。 我想的另一种方式(假设该期刊支持)是使用持久性查询(通过Akka Streams),例如 allPersistence
..
我正在尝试在我的ES-CQRS体系结构中实现读取端。假设我有一个这样的持久性参与者: object UserWrite { 密封特征UserEvent 密封特征状态 案例对象未初始化扩展状态 案例类User(用户名:字符串,密码:字符串)扩展状态 案例类AddUser(用户:用户) 案例类UserAdded(用户:User)扩展UserEvent 案例类UserEvents(use
..