AsyncAPI 中的关联 ID 是什么?

问题描述 投票:0回答:2

我试图了解 AsyncAPI 规范中的相关 ID https://www.asyncapi.com/docs/specifications/v2.0.0#correlationIdObject

有一个完整的例子专门用于此,但我仍然不知道这个属性的目的是什么 https://github.com/asyncapi/spec/blob/3470a6386736cf6002846d8eb7535308b79c75e8/examples/correlation-id.yml

我感兴趣的是:

  • 此信息与数据生产者(服务器)或消费者(客户端)相关吗?
  • 我们可以从中得到什么信息?
  • 我应该在什么实际用例中使用它?
asyncapi
2个回答
2
投票

correlationid
目的是指定在消息中的何处可以找到相关标识符。有时此信息是标头的一部分,有时可以在消息有效负载中。所以
correlationid
属性是为了统一此类信息呈现给 API 描述的方式,它是您指定标识符确切所在位置的地方。

你为什么需要它?根本不。对我来说最主要的原因总是追踪。相关标识符也称为跟踪 ID 或请求 ID。请以不同的方式称呼它。基本上,这是事件的 ID,可帮助您通过 Jeager 等日志和跟踪工具跟踪系统中的事件。因此,您可以跟踪系统中事件从 A 点到 Z 的流程,例如确定为什么它没有到达 Z、它堆栈在哪里。

它在事件驱动架构中的请求/回复模式中也很有用。事件的生产者希望确保它收到的回复事件是消费者对此特定事件的响应。


0
投票

我不知道 AsyncAPI,但在一般软件工程中,您可能需要异步调用服务,但继续进行其他工作,直到从长时间运行的服务获得回调。假设在订单管理中有人正在网上购买商品。系统完成购买该物品的步骤,然后您需要告诉运输部门运输任何物品。你不能直接说订单已经结束,因为我们不知道运输部门是否真的发货了或者买家是否收到了。因此,订单流程处于挂起模式,订单状态存储在某种数据库中,通常采用 JASON 或 XML 格式。当运输部门发货时,他们的系统可以回复运行他们发货的订单流程的原始系统,但他们如何知道发货了什么以及唤醒并继续哪些流程?他们通常会使用比订单号更独特的相关 ID,更像是 GUID。订单管理将收到消息,通过相关 ID 查找订单,查看该订单的状态更改并将状态更新为“已发货”。同样,当商品被标记为已交付并且订单流程可以被标记为完成时,它可以更新,或者调用其他系统来启动计费,或者其他什么。

© www.soinside.com 2019 - 2024. All rights reserved.