GRPC通过Context上下文跨进程传输全局数据 BUG解决

49 阅读1分钟

GRPC通过Context上下文跨进程传输全局数据 BUG解决

context.withValue不能使用在跨进程传输的场景

参考此人文章:

blog.csdn.net/weixin_3812…

解决方式:

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