我是 DDD 的新手,我现在正在阅读文章以获取更多信息。其中一篇文章侧重于领域事件 (DE)。例如,发送电子邮件是在执行一段代码时满足某些条件后引发的域事件。
代码示例显示了一种处理域事件的方法,然后是本段
请注意,上述代码将在与常规域工作相同的事务内的同一线程上运行,因此您应避免执行任何阻塞活动,例如使用 SMTP 或 Web 服务。相反,更喜欢使用单向消息传递与执行这些阻塞活动的其他事物进行通信。
我的问题是
- 这是处理 DE 的普遍问题吗?或者只是提到文章中的解决方案?
- 如果事务中引发领域事件,系统不会同步处理,应该如何处理?
- 当我决定序列化这些事件并让调度程序(或任何其他机制)执行它们时,事务回滚时会发生什么?(在文章中事件在事务中执行的代码中引发)谁将取消它们(当它们没有持久化到数据库时)?
谢谢