grpc java-迭代Context.keyValueEntries?
我是grpc的新手,正在开发我们的服务器端grpc代码 最终目标是“传递所有与特定模式匹配的变量” 元数据到子调用' 第一步是获取这些关键值 现在我可以得到任何固定(编译时已知)的键值对:grpc java-迭代Context.keyValueEntries?,java,grpc,grpc-java,Java,Grpc,Grpc Java,我是grpc的新手,正在开发我们的服务器端grpc代码 最终目标是“传递所有与特定模式匹配的变量” 元数据到子调用' 第一步是获取这些关键值 现在我可以得到任何固定(编译时已知)的键值对: 创建一个ServerInterceptor: 公共类HeaderInterceptor实现ServerInterceptor{ 私有静态最终字符串键\u KNOWN=“编译时”; 私有静态最终元数据。密钥元数据\u密钥= Metadata.Key.of(Key_已知,Metadata.ASCII_字符串_封送
ServerInterceptor
:
公共类HeaderInterceptor实现ServerInterceptor{
私有静态最终字符串键\u KNOWN=“编译时”;
私有静态最终元数据。密钥元数据\u密钥=
Metadata.Key.of(Key_已知,Metadata.ASCII_字符串_封送器);
公共静态最终上下文。键上下文\u键=
上下文。键(已知键);
@凌驾
公共侦听器侦听呼叫(
服务器呼叫,
元数据,
服务器调用处理程序(下一步){
Context Context=Context.current().withValue(
上下文键,
get(metadata_KEY));
//…其他代码
}
}
导入静态some.package.HeaderInterceptor.CONTEXT\u键;
String value=CONTEXT_KEY.get();
但是要求更通用,并且在运行时之前密钥名是未知的
在服务器拦截器中
for(字符串键:metadata.keys())
可以迭代所有键和值
但是SOME\u generic\u KEY.get()
的泛型版本是什么?我尝试了Context.current().keyValueEntries
,但无法编译(非公共)
我找了又读
但它们都没有提供(这个问题的)解决方案
谁能帮忙,谢谢
但是什么是某个_generic _KEY.get()的泛型版本?我尝试了Context.current().keyValueEntries,但无法编译(非公共)
Context
故意不允许对键进行迭代,因为这允许使用Java可见性来限制对设置/获取特定键的访问。这将产生与ThreadLocal
类似的结果。键使用Java默认标识等式(k1==k2
),并且传递给上下文的字符串。键(已知键)
是在get()过程中未使用的调试字符串
虽然上下文是一种类似于映射的数据结构,但它并不是一种通用的映射,因为它是不可变的,使用普通的HashMap或POJO可以更好地存储许多相关的键
那么,如何存储多个键,在元数据中找到的每个头对应一个键?使用地图。使用找到的条目创建一个映射,并将该映射存储在Context.Key
Key中