假设我们有一个总计User
,其中UserPortraitImage
和Contract
作为PDF文件。我想将文件存储在专用的基于文档的存储中,并在事件中保存与进程相关的数据(通过指向BLOB数据的链接)。在事件源应用程序中避免两阶段提交保存BLOB数据
但是,当我必须存储文件并存储新事件时,如何避免两阶段提交?
起初,我会存储文件,然后事件;如果第一个事务失败则无关紧要,该命令失败。如果第二个事务失败,即使我们在存储中生成了一些死文件,也没有关系,该命令失败;我们甚至可以应用回滚。 但是会有额外的问题吗?
接下来的问题是如何设计聚合和事件。如果聚合只保存对BLOB存储的引用,那么调用SignUp
命令后的过程是什么?
SignUpCommand
==>存储文档(UserPortraitImage
和Contract
)==>用给定的BLOB存储引用创建新的User
聚合并存储它?
是否有更好的设计,可以在知道BLOB数据保存在另一个存储区的情况下卸载聚合的负担?谁负责存储BLOB数据并将引用转发给聚合?
如果我使用佐贺,我在哪里同时保存BLOB数据?这个过程将如何进行? –