grpc绑定java_java grpc threadlocal使用-Go语言中文社区

背景:在项目全文环境中获取公共数据 例如 当前用户的id等。

需要再 grpc 拦截器中 获取headers的信息然后设置到上下文对象 Context 中

常量中定义需要公布的秘钥信息:public class GrpcContextKey {

public static final Context.Key USER_KEY = Context.key("USER");

}

拦截器中设置绑定需要公布的信息:@Override

public ServerCall.Listener interceptCall(ServerCall call,

Metadata headers, ServerCallHandler next) {

//获取客户端参数

Metadata.Key userKey= Metadata.Key.of("token", Metadata.ASCII_STRING_MARSHALLER);

String userId= headers.get(userKey);

Context ctx = Context.current().withValues(GrpcContextKey.USER_KEY, secUser, GrpcContextKey.TOKEN_KEY, userId);

return Contexts.interceptCall(ctx, call, headers, next);

}

使用GrpcContextKey .USER_KEY .get()

附赠:

springboot 整合:原理:http2 GO AWAY (一段时间后channel状态 idle 问题):

ffda7a671c7dd9e2bf2a272f7c93fcd3.png

这个 问题我们是用心跳链接解决的 暂时没有想到别的办法,有解决方案的欢迎及时指正,一定有解决办法的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值