我有一个 API 调用需要使用多个聚合。关于它应该如何与聚合交互,我的脑海中有以下 2 个想法,但我对其他想法持开放态度。
将命令从一个微服务发送到另一个微服务是一种好的做法吗?还是在微服务 B 上设置一个事件处理程序来对来自服务 A 的事件作出 react 并在微服务 B 内生成命令会更好吗?
最佳答案
Is it good practice to send commands from one microservice to another one? Or is it better to have an event handler on microservice B that reacts to events from service A and generates the command all within the microservice B?
在服务架构中需要认识到的重要一点是:我们希望服务是自治的。因此,当 B
因维护而停机时,A
应该继续工作,反之亦然。
这意味着我们需要支持从 A 到 B 的异步消息传递。
当前的“最佳实践”是,您正在处理异步传递的消息,那么语义应该是过去时:SomethingHappened
位于A
和B
会根据自己的判断在自己的时间使用react或不使用react。
这有关系吗?很难说——handle(Event)
是一个命令,CommandReceived
是一个事件。
注意:这实际上只是服务和消息传递——事件溯源/CQRS 确实不参与其中。
Martin Fowler 描述 Domain Events 2005 年。
Each Domain Event captures information from the external stimulus.
如果您认为 A
是 B
的外部(如果它们之间存在服务边界,这是有道理的),那么领域事件模式的语义可能非常适合。
关于java - 微服务与事件溯源 (CQRS) 交互的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55353966/