理解隐式参数传递的最直接方式 http header,它的工作方式与 http header 完全一致,在 GET 或 POST 请求体之外可以传递任意多个 header 参数。而对于 RPC 调用而言,context就是在方法签名的参数之外提供附加参数传递能力,在实现原理上,对于不同的协议,attachment 的实现方式略有不同:
本文档演示如何在 Dubbo-go 框架中使用 context 上下文传递和读取附加参数,来实现上下文信息传递,可在此查看 完整示例源码地址
在客户端中,使用下述方式传递字段, 示例中 key 为 constant.AttachmentKey
即 “attachment”:
在服务端中,使用下述方式获取字段, value的类型为 map[string]interface{}:
源文件路径:dubbo-go-sample/context/proto/greet.proto
源文件路径:dubbo-go-sample/context/go-server/main.go
客户端client文件,创建客户端,在context写入变量,发起调用并打印结果
源文件路径:dubbo-go-sample/context/go-client/main.go
先启动服务端,再启动客户端,可以观察到服务端打印了客户端通过context传递的参数值,说明参数被成功传递并获取