领域事件实现
Domain Events Implementation
我们正在启动 DDD,我们需要实现领域事件 (DE)。我们正在考虑 "developping our own system" 与 "prototyping an exiting framework"。我们知道一些关于 DE 的事情。但是在做出决定之前,我们需要获得一些现实生活中的反馈,以了解应该从这样的系统中获得哪些功能:
- DE 是否应该在每个域中从集中式事件存储中存储和复制,然后再被使用(出于维护和记录目的)?
- 域是否从集中式事件存储(如果有)中获取事件,或者我们是否需要某种协调器来调度 DE?
- 如果我们使用关系数据库来存储域数据(我们知道在设计业务逻辑时应该忽略它),那么该关系数据库是否适合 DE,或者我们是否应该构建 NoSql 数据库原型?
- 我们是否需要实施一些工具来确保事件很好地传播到目标域?
我知道这里有很多问题,总结一下我只想问:
根据您的经验,我们可以从 "theorical DEs system" 中获得哪些主要功能?您是否开发了自己的实现,有意义吗?服务总线是否满足我们的需求?
我为此目的构建了几个库,并且......这取决于。您可以寻求与 Udi Dahan 的示例非常接近的最简单的解决方案,或者使用持久的服务总线。
我推荐持久服务总线方法,但我不能向您推荐特定产品,因为我使用的是我自己的混合物。持久部分很重要,它确保即使应用程序崩溃,事件仍将得到处理。
关于耐用总线的另一重要事项是,所有 command/event 处理程序都需要 幂等。总线保证至少传递一次,您需要准备多次处理同一条消息。
我们正在启动 DDD,我们需要实现领域事件 (DE)。我们正在考虑 "developping our own system" 与 "prototyping an exiting framework"。我们知道一些关于 DE 的事情。但是在做出决定之前,我们需要获得一些现实生活中的反馈,以了解应该从这样的系统中获得哪些功能:
- DE 是否应该在每个域中从集中式事件存储中存储和复制,然后再被使用(出于维护和记录目的)?
- 域是否从集中式事件存储(如果有)中获取事件,或者我们是否需要某种协调器来调度 DE?
- 如果我们使用关系数据库来存储域数据(我们知道在设计业务逻辑时应该忽略它),那么该关系数据库是否适合 DE,或者我们是否应该构建 NoSql 数据库原型?
- 我们是否需要实施一些工具来确保事件很好地传播到目标域?
我知道这里有很多问题,总结一下我只想问:
根据您的经验,我们可以从 "theorical DEs system" 中获得哪些主要功能?您是否开发了自己的实现,有意义吗?服务总线是否满足我们的需求?
我为此目的构建了几个库,并且......这取决于。您可以寻求与 Udi Dahan 的示例非常接近的最简单的解决方案,或者使用持久的服务总线。
我推荐持久服务总线方法,但我不能向您推荐特定产品,因为我使用的是我自己的混合物。持久部分很重要,它确保即使应用程序崩溃,事件仍将得到处理。
关于耐用总线的另一重要事项是,所有 command/event 处理程序都需要 幂等。总线保证至少传递一次,您需要准备多次处理同一条消息。