gpt4 book ai didi

domain-driven-design - 领域驱动设计和领域事件

转载 作者:行者123 更新时间:2023-12-04 11:43:42 25 4
gpt4 key购买 nike

我是 DDD 的新手,我现在正在阅读文章以获取更多信息。 articles其中之一专注于领域事件(DE)。例如,发送电子邮件是在执行一段代码时满足某些条件后引发的域事件。

代码示例展示了一种处理领域事件的方法,后面跟着这一段

Please be aware that the above code will be run on the same thread within the same transaction as the regular domain work so you should avoid performing any blocking activities, like using SMTP or web services. Instead, prefer using one-way messaging to communicate to something else which does those blocking activities.



我的问题是
  • 这是处理 DE 的普遍问题吗?或者它只是提到文章中的解决方案的关注?
  • 如果在事务中引发领域事件,系统不会同步处理它们,应该如何处理?
  • 当我决定序列化这些事件并让调度程序(或任何其他机制)执行它们时,当事务回滚时会发生什么? (在文章中事件在事务中执行的代码中引发)谁会取消它们(当它们没有持久化到数据库时)?

  • 谢谢

    最佳答案

    这是一个普遍的问题时期,别介意 DDD

    通常,在需要以高性能方式响应的任何系统中(例如 Web 服务器,任何长时间运行的事件都应与触发过程异步处理。

    这意味着排队。

    回滚您的事务应该从队列中删除项目。

    当然,您现在需要额外的机制来处理队列中的项目无法处理的情况 - 即未发送电子邮件 - 您还需要在触发代码中允许这种情况 - 后续处理依赖于较早的已经发生的过程将在某些时候引起问题。

    简而言之,您的排队机制本身应该是事务性的并允许重试,您需要将整个事件链视为一个工作流。

    关于domain-driven-design - 领域驱动设计和领域事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6280214/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com