gpt4 book ai didi

protocol-buffers - 如何从 grpc Context.current() 访问属性?

转载 作者:行者123 更新时间:2023-12-04 16:42:31 24 4
gpt4 key购买 nike

是否可以从 rpc 方法定义中访问 grpc 调用的上下文属性?

我写了一个类似这样的服务器拦截器

@Override
public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, final Metadata requestHeaders, ServerCallHandler<ReqT, RespT> next) {

Context.Key<String> USER = Context.key("USER");

Context ctx = Context.current().withValue(USER, "chandan");
return Contexts.interceptCall(ctx, call, requestHeaders, next);
}

在服务实现中,我正在尝试类似

Context.Key<String> key = Context.key("USER");
String value = key.get(Context.current())

每次值都为空。但是,在 intellij 中进行调试时,我可以在 context.current().keyValueEntries 中看到这些值

CompressedIndex(bitmap=100001000000000000000000000000 Leaf(key=USER value=chandan) Leaf(key=opencensus-trace-span-key value=BlankSpan) )

如何访问上下文属性/正确的方法是什么?

最佳答案

Context.Key使用引用相等性。 "USER" string 是 toString() 中使用的调试字符串输出。您应该创建 Key一次并在您需要的任何地方引用该实例。

因为 Context.Key使用引用相等性,您可以使用普通的 Java 可见性限制来限制谁可以访问该值,就像您对 ThreadLocal 所做的那样.

关于protocol-buffers - 如何从 grpc Context.current() 访问属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57098288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com