Java,gRPC和上下文传播(Java, gRPC and Context propagation)

有没有人有客户端(存根)和服务器之间使用gRPC在java中的io.grpc.Context传播的工作示例?

我的理解是,这是不可能的,我必须使用元数据。 我对么?

在线我只找到了使用标题而不是上下文的例子。

谢谢!

Does anyone have a working example of io.grpc.Context propagation between client (stub) and server using gRPC in java?

My understanding is that it's not possible and I must use Metadata instead. Am I correct?

Online I have found only examples using Header rather than Context.

Thanks!

原文:https://stackoverflow.com/questions/49236643

更新时间:2019-12-22 15:34

最满意答案

io.grpc.Context仅用于本地传播,就像线程之间或甚至在同一线程中一样。 gRPC有目的地不会自动传播项目。 您可以使用ClientInterceptor将Context中的值复制到Metadata 。

io.grpc.Context is for local propagation only, like between threads or even on the same thread. gRPC purposefully does not propagate items from it automatically. You can use a ClientInterceptor to copy a value from the Context to the Metadata.

2018-03-13

相关问答

grpc.ServicerContext只是一个接口 ; 在您的测试代码中,您应该能够编写自己的实现并将其传递给正在测试的服务器。 确实,目前我们没有在grpc_testing提供一个grpc.ServicerContext实现,该实现已准备好供测试使用并传递给待测系统,但也不完全清楚我们可以提供一个可以简单实现且价值grpc.ServicerContext实现到大量的测试。 在测试中服务人员如何使用grpc.ServicerContext对象有一个很大的行为空间,另外还有作者编写服务器测试的另一

...

这绝对是一个网络错误。 我刚刚创建了https://github.com/netty/netty-tcnative/issues/141 ,并将着眼于减少MSVC带来的依赖项列表。 现在,尝试自己构建openssl [静态/动态]并查看它是否适合您。 This is definitely a netty-tcnative bug. I've just created https://github.com/netty/netty-tcnative/issues/141 and will be loo

...

使用gRPC流API,您一次只能写一个项目。 如果在上一个完成之前启动另一个WriteAsync()操作,则会出现异常。 您还需要在从方法处理程序返回之前完成所有写入操作(在本例中为Feed方法)。 一次只允许一次写入的原因是确保gRPC的流量控制运行良好。 在您的情况下,Rx API似乎无法确保,因此解决此问题的一种方法是使用中间缓冲区。 With the gRPC streaming API, you are only allowed to write one item at a time.

...

我认为unfoldr正是你想要的: Prelude> import Data.List(unfoldr)

Prelude Data.List> :t unfoldr

unfoldr :: (b -> Maybe (a, b)) -> b -> [a]

Prelude Data.List> let nrs = unfoldr (\n -> Just (n,n+1)) 1

Prelude Data.List> take 10 nrs

[1,2,3,4,5,6,7,8,9,10]

它的工作方式如下:

...

io.grpc.Context仅用于本地传播,就像线程之间或甚至在同一线程中一样。 gRPC有目的地不会自动传播项目。 您可以使用ClientInterceptor将Context中的值复制到Metadata 。 io.grpc.Context is for local propagation only, like between threads or even on the same thread. gRPC purposefully does not propagate items from

...

我正在读取错误的文件作为构建SslContext的证书文件。 用正确的证书文件替换错误的输入解决了问题。 I was reading the wrong file as the certificate file for building the SslContext. Replacing the incorrect input with the right certificate file fixed the issue.

提供ServerContext ,以及为您获得的每个RPC添加上下文。 它允许您调整RPC的某些方面,例如处理身份验证,或将响应中的元数据添加回客户端。 显然,您可能需要或不需要该参数,具体取决于您的需求。 我们不希望为此特别添加一个选项,因为这样会使代码和工具复杂化,所以代码生成器和函数签名会强制您始终拥有该参数。 现在这不是什么大问题,因为在C ++中,您可以特别要求编译器忽略特定实例中的参数,例如使用以下内容: Status SayHello(ServerContext* context

...

现在我懂了。 响应作为迭代器返回。 所以它应该作为迭代器处理。 Now I get it. Response is returned as an iterator. So it should be handle as iterator.

您需要ServerCall.Listener.onComplete()和ServerCall.Listener.onCancel() 。 onComplete()在ServerCall.close()成功处理后调用。 onCancel()用于任何通信错误或取消。 请注意,在应用程序调用ServerCall.close()后可以接收onCancel() ServerCall.close() 。 You want ServerCall.Listener.onComplete() and ServerC

...

我终于找到了自己的方式: https : //github.com/grpc/grpc-go/blob/master/Documentation/grpc-metadata.md 所以基本上, grpc.SetHeader() + grpc.SendHeader()和grpc.SetTrailer()完全是我想要的。 在客户端,需要将grpc.Header()和grpc.Trailer()函数传递给RPC调用,并且它们的参数是要填充的metadata.MD对象。 在客户端,定义您的接收元数据: v

...

java上下文_Java,gRPC和上下文传播(Java, gRPC and Context propagation)相关推荐

  1. java 模块化_Java 9 新特性 - 模块化 - Java 技术驿站-Java 技术驿站

    Java 9 最大的特性就是模块化 ( Module ) 了.本章,我们就对这个 模块化 进行一些简单的讲解,包括 Java 9 模块化的概念.如何实现.如何使用等 对于 Java 9 来说,模块化 ...

  2. 怎么运行java虚拟机_Java代码如何运行在Java虚拟机中

    我们都知道要运行Java代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要 ...

  3. java修车_JAVA小练习34——使用java描述一个车类与一个修车厂类

    练习:使用java描述一个车类与一个修车厂类, 车具备的公共属性: 名字. 颜色. 轮子数. 车具备的公共 行为是跑的功能,但是跑之前必须要先检查轮子 是否够4个,如果不够4个轮子送去修车厂修理.修理 ...

  4. java泛型_Java核心知识 基础五 JAVA 泛型

    泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型.泛型的本 质是参数化类型,也就是说所操作的数据类型被指定为一个参数.比如我们要写一个排序方法, 能够对整型数组.字符串数组甚 ...

  5. java光标_java怎么设置光标位置 java设置光标位置方法

    java设置光标位置方法: 方法一. import Java.awt.TextField; import javax.swing.JFrame; public class InsertPosition ...

  6. java形状函数_java基础:10.4 Java FX之形状

    JavaFX 提供了多种形状类,用于绘制文本.直线.圆.矩形.椭圆.孤.多边形以及折线. Shape 类是一个抽象基类,定义了所有形状的共同属性.这些属性有fill.stroke,strokeWidt ...

  7. 由于超过32位java限制_Java 32位Xmx vs java 64位Xmx

    分配内存和分配地址空间有区别. Oracle JVM正在启动时分配地址空间以确保堆是连续的.这允许与堆一起使用某些优化. 如果分配失败,则Java将不会启动-如您所见.它不一定使用那么多的内存,而是前 ...

  8. java淘金者_Java游戏淘金者源码JAVA游戏源码下载

    Java游戏淘金者源代码!外国网站的东西.部份代码配合了C语言,游戏很小,想学习的朋友值得看一看. Java游戏淘金者源码 (1 folders, 2 files, 1.38 KB, 144.41 K ...

  9. java 集成_java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

最新文章

  1. VanDyke.SecureCRT.v7.0.0.326官方英文版x86 x64 + Keymaker-ZWT
  2. Java线程详解(12)-有返回值的线程
  3. 一行js代码识别Selenium+Webdriver及其应对方案 1
  4. h5-plus.webview
  5. html 正则表达式验证金额,js金额校验,js正则表达式,包含正负,小数点后两位...
  6. Microsoft Project 变更项目日历的注意事项
  7. ajax 防止用户反复提交
  8. LogMeIn Pro 试用简介!
  9. Typora添加参考文献
  10. TCP/IP协议——TCP协议
  11. 7年沉淀之作--滴滴Logi日志服务套件
  12. 关于win 10 WLAN连接红叉的问题解决
  13. 区块链需要学习哪些东西_学习区块链需要哪些 这些基础知识要知道
  14. 期末考试【学堂在线答案】信息素养——学术研究的必修课(2021秋)
  15. 淡淡的感动——电影《听说》观后感
  16. Rollup【ESM打包工具】
  17. 从一幅图中了解开源世界
  18. Oracle 收缩表空间一例
  19. STM8L101F3P6低功耗
  20. C语言编程: 在BMP图片上添加图片水印

热门文章

  1. nginx添加nginx_mod_h264_streaming-2.2.7模块编译报错
  2. IOS一些常用的越狱渠道
  3. 使用C#开发纽曼USB来电小秘书客户端小结
  4. [置顶] android 与JavaScript的互相调用
  5. SpringAOP和AspectJ
  6. C# XXX.XmlSerializers”的程序集未能加载到..
  7. 前段之BOM ----DOM
  8. 快速了解layui中layer的使用
  9. php操作access数据库类代码
  10. caffe学习日记--lesson7:caffemodel可视化的两种方法