在我们的应用程序中,当域模型发生变化时,我们会引发域事件。事件处理程序执行的某些任务必须在引发事件时使用的同一事务中完成,其他任务必须在此事务之外执行。
例如,
当 Orderline 添加到 Order 实体时,会引发 OrderLineAdded 域事件,一个域事件会更改域模型的状态(因此必须在同一事务中执行),然后当事务完成时,必须更新 UI。
你会如何处理这个问题?
- 引发两个事件,一个在事务内部,一个在事务外部。
- 在事务内部引发事件,但使用事件处理程序发送异步请求以更新 UI?
选项 1 似乎令人困惑,因为事件名称必须以某种方式传达它们是在事务中还是在事务之外,但是对于选项 2,域事件的处理程序必须始终假定它们是从事务中同步调用的。
也许有更好的方法?