在DDD中跨边界上下文进行集成时,以下哪项被认为是更好的做法?
1)当实体在源BC中发生更改时发布事件,在使用BC中侦听这些事件,将数据整形为所需的实体,并将其存储在使用BC中。
或
2)当另一个BC需要该信息时,向拥有实体的BC进行API调用。
还是还有其他方法被认为比上述方法更好?
答案 0 :(得分:1)
如果您对自治感兴趣,那么您就不想拥有需要其他服务才能使用的服务。
所以您可能应该考虑另一种方法-当您的 primary 用例不可用时,当远程数据提供者不可用时,消费者如何工作,然后考虑是否要添加任何增强功能数据提供者处于活动状态时。
这通常意味着每个服务都将缓存其所需数据的副本。
让消费者提取他们需要的数据通常比尝试将数据推送给他们更简单-请参阅Greg Young在Polyglot Data上的演讲。
答案 1 :(得分:0)
我认为问题不应该是“ API vs事件”,而应该是“ sync vs async”,并且不一定是最佳实践或最差实践。这取决于您对如何集成BC的要求。这取决于您的域。
您可以使用API而不是事件来实现异步集成,每隔一段时间对远程API进行一次调用,轮询请求。