跳到主要内容

Operation

Operation 是 NRCP 中用于一次性 Request/Response 交互的协议抽象。一次 Operation 调用称为 Call,由一个 Request 和一个 Response 或 Error 构成

Operation 不表示持续数据流,不使用 channel_id,也不参与 Flow QoS 协商。Operation 使用固定 QoS,默认通过 QUIC Stream 承载

消息关联

消息message_idrelated_id
OPERATION_REQUESTRequest 自己的 ID0
OPERATION_RESPONSEResponse 自己的 IDRequest 的 message_id
OPERATION_ERRORError 自己的 IDRequest 的 message_id

Payload

Operation 控制类 Payload 默认使用 JSON。具体 Operation 允许在接口定义章节中覆盖 Payload Codec 和 Schema

Request Payload 字段定义如下:

字段必填含义
operationOperation Name
paramsOperation 参数对象
timeout_ms请求超时
idempotency_key幂等键

Response Payload 字段定义如下:

字段必填含义
operationOperation Name
resultOperation 结果对象

超时与重试

Client 发出 Request 后,应在 Operation 超时时间内等待 Response 或 Error。若超时未收到结果,Client 可将该 Call 标记为失败

Response 晚到时,Client 应通过 related_id 和本地 Call 状态判断是否仍可接受。若 Call 已结束,晚到 Response 应被丢弃或记录为调试信息

是否允许重试由具体 Operation 定义。若 Operation 标记为幂等,Client 允许使用相同 idempotency_key 重试。非幂等 Operation 不应自动重试

取消

当前版本保留 OPERATION_CANCEL,但不要求实现。若具体 Operation 需要取消语义,应在接口定义章节中显式声明