azure 如何使用事件驱动架构防止循环

dldeef67  于 2023-05-29  发布在  其他
关注(0)|答案(1)|浏览(201)

在我们的组织中,我们正在实现API LED Connectivity模式和事件驱动架构。我们基本上希望源系统发布事件,订阅者可以对这些事件做出React来做一些事情,主要是更新他们自己的源系统。我们的设计有一个主要问题,目前我们没有解决方案。所以我们想请你帮忙!
我们的问题是事件会触发更新循环。下面的图片以一种非常简单的方式描述了我们想要的东西,以及会发生什么:

系统A中的更新将更新系统B,系统B将创建事件并更新系统A,系统A将创建事件并更新系统B等。等等的。
我们如何停止这种循环,考虑以下几点:
我们无法阻止系统B发送事件。由于许多源系统的复杂性,我们对此没有影响。所以系统B将发送事件我们不能忽略系统B的事件到系统A,因为该事件中可能有数据确实需要在系统A中更新。

tvmytwxo

tvmytwxo1#

当系统C和D也存在时,这个问题会更严重,并且由于发布者在发布新事件之前没有任何事件知识,事件会导致链中的循环。Event-ids/Correlation-ids只能让你走到这一步。
我提出的最佳解决方案是确保订阅服务器在不需要处理的情况下提前退出,并且不会生成导致循环的新事件。
也就是说,如果一个系统实际上没有改变任何东西,不要让它发送更新事件。这使得许多边缘案例消失。
例如,如果事件/消息是“更新员工地址”,并且地址已经匹配,则在发送任何新事件之前提前退出
这在重新提交失败的事件时也有很多好处。

相关问题