汇总B
的计算需要最终与汇总A
一致。聚合A
可以使用八种方法进行变异,每种方法都需要更新B
。这似乎是最终一致的任务,但实际的更新时间框架应该在几秒钟内。
我不想依赖应用层来记住'触发更新。 (Jimmy Bogard says this也是如此。)建模的最佳方法是什么?
使用具有双重调度的域服务很痛苦:
A
B
中触发更新。构造函数注入也很痛苦:
A
没有发生变异,因此被迫实例化并注入域名服务以观察当然不会发生的突变感觉不对。B
中触发更新。域名活动听起来不错,但我不确定那是什么样的。每种变异方法都会引发一个域事件?
B
中触发更新。我如何建模'了解'当A
完成更新并知道它是否已更新以便我可以触发B
更新而不依赖于应用层每次按特定顺序调用方法?
或者这确实是存储库级别或应用程序级别的问题,即使它似乎是域要求吗?
答案 0 :(得分:1)
您的号码3是常用的,也是一种非常直接的技巧:
AChangedType1
,...,AChangedTypeN
AChangedTypeX
并发出相应的UpdateBTypeX
命令。松散耦合(A和B现在彼此无关)并且很好地扩展(易于并行化),并且它们之间的关系在长时间运行的过程中被明确建模。
如果您不想在A上的每次更改时触发对B的更新,那么您可以在发出UpdateBTypeX
命令之前将更新延迟一段时间(因为它通常在网络协议中完成) ,参见,例如,TCP's delayed acks。