我知道数据总是陈旧的。
处理工作流任务的方法是什么,例如批准发票。该任务允许用户执行一次。当这由异步服务处理时,它可能需要几秒钟(或更长时间)。与此同时,用户可以再次批准同一发票,因为该任务尚未在数据库中更新。
对此有任何想法都表示赞赏。
答案 0 :(得分:1)
域模型必须强制实施一致性。写入侧的模型不应该被认为是陈旧的,只有读取侧的投影。
如果未将批准事件预测到读取模型中,则无关紧要。但是,如果用户基于陈旧数据发送无效命令,则域模型需要知道批准已经发生。
您的域的存储库应始终将聚合根置于其lates状态(无论您是使用事件源还是某些基于状态的持久性作为SQL db)。