event-sourcing相关内容

CQRS事件来源:验证用户名的唯一性

让我们以一个简单的“帐户注册”示例为例,该流程如下: 用户访问网站 单击“注册”按钮并填写表单,然后单击“保存”按钮 MVC控制器:通过读取ReadModel来验证用户名的唯一性 RegisterCommand:再次验证用户名唯一性(这里是问题) 当然,我们可以验证用户名唯一性通过读取MVC控制器中的ReadModel来改善性能和用户体验。但是,我们仍然需要在RegisterCo ..
发布时间:2020-10-11 01:15:18 其他开发

域事件应该有多精细?

我想知道域事件的粒度如何? 例如,我有一些简单的事情,例如更改配置文件中的firstName,secondName和电子邮件地址页。我应该拥有3个不同的域事件还是只有一个? 通过添加新功能时的粗粒度域事件,我必须创建该事件的新版本,因此我必须添加新的事件类型,或将事件版本存储在事件存储中。通过细粒度的域事件,我没有这些问题,但是我有太多的小类。您如何看待,在这种情况下的最佳实践是什么? ..
发布时间:2020-10-11 01:14:03 其他开发

为什么将命令和事件限制为一个集合? CQRS + ES + DDD

请说明为什么在进行CQRS,ES和DDD时同时修改多个聚合是一个坏主意。 以诸如PurgeAllCompletedTodos之类的命令为例。我希望此命令导致一个事件,该事件通过将IsActive设置为false来更新每个已完成的Todo聚合的状态。 为什么这样做不好? 我能想到的一个原因: 在更新域状态时,最好将交易限制在定义明确的部分整个状态,因此在更新期间仅此部分需要写 ..
发布时间:2020-10-11 01:12:54 其他开发

发送命令时,CQRS事件源检查用户名在EventStore中是否唯一

当我们具有特定的唯一EntityID时,EventSourcing可以完美地工作,但是当我尝试从除特定EntityId之外的eventStore中获取信息时,我遇到了困难。 我正在使用具有EventSourcing的CQRS。作为事件源的一部分,我们将事件作为列(EntityID(uniqueKey),EventType,EventObject(例如,UserAdded))存储在SQL表中。 ..
发布时间:2020-10-11 01:12:48 其他开发

使用RDBMS作为事件源存储

如果我正在使用RDBMS(例如SQL Server)存储事件源数据,那么该架构将是什么样? 我已经看到抽象中谈到的一些变体 例如,假设某人拥有一个“产品”,实体,并且对该产品的更改可以采用以下形式:价格,成本和说明。我对是否愿意感到困惑: 具有“ ProductEvent”表,具有产品的所有字段,其中每个更改均表示该表中的新记录,以及“谁,什么,在哪里,为什么,何时和如何”。 ( ..
发布时间:2020-10-11 01:10:31 其他开发

偶尔连接的CQRS系统-客户端和服务器命令-基于任务的屏幕

前提: 建议在 CQRS + DDD + ES 样式的应用程序中使用基于任务的屏幕,这些屏幕可指导用户并捕获意图。 这些任务屏幕也可以称为归纳用户界面。 UI设计指南的一些示例可以帮助您创建更现代,用户友好的应用程序: Microsoft归纳用户界面指南 ,以及 UX准则索引 按照我的理解,通常来说,任务应该与命令或功能对齐在服务器上等待。 例如,如果用户更改了 ..

Kafka流的事件源

我正在尝试在 Kafka流之上实现简单的CQRS/事件源概念证明(如 https://www.confluent .io/blog/event-sourcing-using-apache-kafka/) 我有4个基本部分: commands主题,该主题使用聚合ID作为键来按顺序处理每个聚合中的命令 events主题,聚合状态的每个更改都发布到该主题(同样,键是聚合ID).本主题的保留 ..
发布时间:2020-09-03 18:58:14 其他开发

将Kafka用作(CQRS)事件存储.好主意?

尽管我之前遇到过 Kafka ,但我最近才意识到,Kafka可能被用作( CQRS , Kafka支持的主要观点之一: 事件捕获/存储,当然是所有HA. Pub/sub体系结构 具有重播事件日志的功能,使新订户可以在事件发生后向系统注册. 诚然,我不是100%精通CQRS/事件源,但是这似乎与事件存储应有的程度非常接近.有趣的是:关于Kafka用作事件存储,我真的找不到太多,所以也 ..
发布时间:2020-07-30 20:41:48 其他开发

偶尔连接的CQRS系统

问题: 两名员工(A和B)在编辑客户#123(例如版本20)的同时脱机,而在脱机状态下继续进行更改... 场景: 1-两名员工编辑客户#123,并更改一个或多个相同的属性. 2-两名员工编辑客户#123,但不要进行相同的更改(他们彼此交叉而不接触). ...然后他们都重新上线,首先是员工A追加,从而将客户更改为版本#21,然后将客户B更改为版本20. 问题: ..

EventSourced Saga实现

我已经写了一个事件源聚合,现在实现了一个事件源Saga ...我注意到两者都是相似的,并创建了一个事件源对象作为派生两者的基类. 我在这里看到了一个演示 http ://blog.jonathanoliver.com/cqrs-sagas-with-event-sourcing-part-ii-of-ii/,但可能会出现问题,因为如果发生进程崩溃,命令可能会丢失因为命令的发送不在写事务之外? ..

为什么我的命令事件字符串字段检索为null

我正在编写我的第一个EventStore测试应用程序,正在从流中重新填充对象,虽然它正确获取了数字,但标题为null,并且我不明白为什么-从流中的标题设置为null,但我确定它写的很好. 新鲜的眼睛可以看到我在做什么吗? private static void Main() { using (store = WireupEventStore()) { v ..
发布时间:2020-06-14 18:40:17 其他开发

重播事件以进行调整

假设地,我正在使用一个使用“事件采购"(存储业务事件)进行物料买卖的系统;有时会生成一份报告,其中包含价格和成本信息. 想象一下,我的一位客户打电话给我说:“成本错了,对我来说,利润规则就是这种方式." 我可以添加更多处理程序或更改规则以适应这种特殊情况,然后重播事件. 但是我的问题是,这是正确的方法(或者至少是更好的方法)? 解决方案 在事件源系统中,事件是不可变的-发 ..

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

如何访问EventStore中的所有存储事件以重建读取的模型? 在问题 J Oliver EventStore V2.0问题中提到了称为GetFrom的方法,但是在Wireup返回的"IStoreEvents"接口上找不到该方法. 解决方案 该方法是IPersistStreams接口而不是IStoreEvents接口的一部分.需要对API进行一些微调以适应这种情况.我刚刚在IStor ..
发布时间:2020-06-14 18:40:00 其他开发

使用CQRS的读取端实现方法

我已经转到积极使用CQRS +事件源的项目.乍一看,它是按照所有这些书籍和博客进行实现的,但是最后,我意识到实现的确切意义. 这是CQRS架构: 最初,我是从此处拍摄的这张照片. 如图片所示,读取端从队列接收事件,并将事件逐一传递到不同的投影集(去规范化器)中,然后通过AddOrUpdate方法将生成的ViewModel保存到DB中.因此,据我所知,图片非规范化器只能依赖于事件本 ..
发布时间:2020-06-14 18:39:57 其他开发

处理CQRS读取端的乱序事件

我已经阅读了乔纳森·奥利弗(Jonathan Oliver)的这篇不错的文章,内容涉及处理乱序事件. http://blog.jonathanoliver.com/cqrs-out-of-sequence-messages-and-read-models/ 我们使用的解决方案是使一条消息出队,并将其放置在“保存表"中,直到所有具有先前顺序的消息都被处理为止. 已收到.收到所有先前的消息 ..
发布时间:2020-06-14 18:39:55 其他开发

CQRS:存储事件并发布它们-如何以安全的方式做到这一点?

据我在“>为什么是CQRS存储库发布事件,而不是事件存储吗?这是CQRS存储库发布事件的任务.到目前为止,一切都很好. 当然,存储事件和发布事件应该在一个事务中.从技术上讲,这意味着将一个(或多个)记录写入商店,并将一个(或多个)事件发布到消息总线.因此,简单的数据库事务是不够的,它应该是分布式的. 现在,不幸的是,许多NoSQL数据库(例如MongoDB)不支持ACID兼容事务,甚至 ..
发布时间:2020-06-14 18:39:53 其他开发

使用Akka执行事件采购时如何在CQRS中逼近Q?

与事件来源结合使用时,是否存在一种进行CQRS的好方法? 我想到的一种方法是,在命令变成事件并持久保存到事件日志后,在(持久角色的)命令处理程序中执行此操作(这些事件代表Write模型),我将使用事件总线将事件发送给感兴趣的订阅查询参与者,以便他们可以更新其查询模型。 我想的另一种方式(假设该期刊支持)是使用持久性查询(通过Akka Streams),例如 allPersistence ..
发布时间:2020-06-03 18:36:14 其他开发

Akka持久性查询事件流和CQRS

我正在尝试在我的ES-CQRS体系结构中实现读取端。假设我有一个这样的持久性参与者: object UserWrite { 密封特征UserEvent 密封特征状态 案例对象未初始化扩展状态 案例类User(用户名:字符串,密码:字符串)扩展状态 案例类AddUser(用户:用户) 案例类UserAdded(用户:User)扩展UserEvent 案例类UserEvents(use ..
发布时间:2020-06-03 18:35:16 其他开发