Cqrs CQR、事件来源和已创建记录的ID

Cqrs CQR、事件来源和已创建记录的ID,cqrs,event-sourcing,Cqrs,Event Sourcing,刚从CQR和事件来源开始。对于那些与CQR合作的人来说,这是一个一般的新手问题 比如说,我们有一个事件“userRegistration”,我们应该在这里为这个创建的用户创建Id?我们是否应该将此Id写入事件数据?建模CQR时通常是如何进行的?是的,您通常希望在事件数据中包含id。侦听UserRegistered事件的处理程序可能需要知道您要对哪个用户进行事件处理 任何足够独特的id生成方法都可以。但是您可以从id生成具有确定性的方法中获得巨大的好处;它为您的系统提供了另一种识别重复消息的方法

刚从CQR和事件来源开始。对于那些与CQR合作的人来说,这是一个一般的新手问题


比如说,我们有一个事件“userRegistration”,我们应该在这里为这个创建的用户创建Id?我们是否应该将此Id写入事件数据?建模CQR时通常是如何进行的?

是的,您通常希望在事件数据中包含id。侦听UserRegistered事件的处理程序可能需要知道您要对哪个用户进行事件处理

任何足够独特的id生成方法都可以。但是您可以从id生成具有确定性的方法中获得巨大的好处;它为您的系统提供了另一种识别重复消息的方法

在这里,使用命名的UUID是一个可能的答案,具有确定性,但冲突频率非常小,不太可能出现问题


例如,如果RegisterUser命令有一个唯一的标识符(很有用,因为它为您提供了另一种识别重复项的方法),那么您可以使用该标识符确定地为用户生成一个新的标识符。

对于那些使用CQR的人来说,这是一个普通的新手问题,记住,事件代表已经发生的事情,所以应该用过去式命名,比如“UserRegistered”。