我有两个微服务[A,B],服务[B]与遗留系统[C]集成。服务[B]通常生成唯一标识符,并将其包含在[C]的流中,还将其传递回[A]。通过这种方式,各系统之间进行了协调。
当需要一个[a]必须并行调用以通知[C]的服务[D]时,问题才真正开始。
虽然让[A]生成唯一标识符并将其发送给[B]和[D]以解决问题是有意义的,但由于[C]中的更改成本,这并不容易。因此,我们仍然需要为[D]提供[B]的唯一标识符,以便将[C]中的数据结合起来。
如果有战术模式可以解决这个问题,如果有人能指导我,我将不胜感激。
在没有图表的情况下跟踪所有服务有点困难,但我会尽我所能。你说C在当前过程中将标识符传递回A,所以我假设这个调用结构是
A -> B (create ID) -> C -> A
现在你想介绍
A -> D -> C -> A
您需要C来知道ADC路径中的哪个消息与ABC路径中的那个消息相关。这是正确的吗?
最好的解决方案是让A为每个人创建ID,就像这个
A (Create ID) -> B (use ID given by A) -> C -> A
A (Use same ID) -> D -> C -> A
如果您无法更改代码以在a服务中创建单个ID,请尝试两个不同的消息ID。这将是笨拙的,因为你需要存储在某个地方,这样你就可以判断msg123来自与msgABC相同的来源,但它会解决问题。
这会给你
A -> B (create ID1) -> C -> A
A (Create ID2) -> D -> C -> A