GRPC通过Context上下文跨进程传输全局数据 BUG解决
context.withValue不能使用在跨进程传输的场景
参考此人文章:
解决方式:
gateway发送
md := metadata.Pairs("username", username.(string))
ctx := metadata.NewOutgoingContext(context.Background(), md)
task_service接受
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
fmt.Printf("get metadata error")
}
username := md["username"][0]
fmt.Printf("username: %s\n", username)
注意,重写rpc中pb内容之后要同时重启服务和gateway