相关疑难解决方法(0)

发送命令时,CQRS事件采购检查用户名是唯一的或不是来自EventStore

当我们拥有特定的唯一EntityID时,EventSourcing非常有效,但当我尝试从eventStore获取除特定EntityId以外的信息时,我很难过.

我正在使用CQS和EventSourcing.作为事件源的一部分,我们将事件存储在SQL表中作为列(EntityID(uniqueKey),EventType,EventObject(例如UserAdded)).

因此,在存储EventObject时,我们只是序列化DotNet对象并将其存储在SQL中,因此,所有与UserAdded事件相关的细节都将采用xml格式.我担心的是我想确保db中存在的userName应该是唯一的.

因此,在创建AddUser命令时,我必须查询EventStore(sql db)是否已在eventStore中存在特定的userName.因此,为此,我需要序列化事件存储中的所有UserAdded/UserEdited事件,并检查eventStore中是否存在请求的用户名.

但由于部分CQRS命令不允许查询,可能是因为Race条件.

所以,我尝试在发送AddUser命令之前只查询eventStore并通过序列化所有事件(UserAdded)获取所有UserNames并获取用户名,如果请求的用户名是唯一的,则命令其他方式抛出userName已经存在的异常.

与上述方法一样,我们需要查询整个数据库,并且每天可能有数十万个事件.因此,执行查询/反序列化将花费很多时间,这将导致性能问题.

我正在寻找任何更好的方法/建议维护用户名唯一通过从eventStore或任何其他方法获取所有userNames

domain-driven-design unique cqrs event-sourcing

18
推荐指数
3
解决办法
3783
查看次数