问题标签 [grpc-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6513 浏览

java - 从客户端干净地关闭 GRPC-Java 中所有打开的流

我正在使用 GRPC-Java 1.1.2。在一个活动的 GRPC 会话中,我打开了一些双向流。当客户端断开连接时,有没有办法从客户端清除它们?当我尝试断开连接时,我运行以下查找固定次数然后断开连接,但我可以在服务器端看到以下错误(但不确定它是否由另一个问题引起):

与客户端断开连接

服务器上的错误

0 投票
3 回答
8695 浏览

java - 如何在客户端使用 Java 读取 gRPC 中的元数据

我正在使用 Java 和 Protoc 3.0 编译器,下面提到了我的 proto 文件。 https://github.com/openconfig/public/blob/master/release/models/rpc/openconfig-rpc-api.yang

为了进行服务调用(rpc TelemetrySubscribe),首先我需要读取具有订阅 ID 的标头,然后开始读取消息。现在,使用 Java 我能够连接到服务,我确实引入了拦截器,但是当我打印/检索标头时它为空。我调用拦截器的代码如下,

这是读取元数据的拦截器代码。

想知道有没有其他方法可以读取包含订阅 ID 的元数据或第一条消息?我只需要读取具有订阅 ID 的第一条消息,并向服务器返回相同的订阅 ID,以便可以开始流式传输

从上面的 python 代码我可以很容易地检索元数据对象,不知道如何使用 Java 检索相同的对象?

阅读元数据后,我得到的是:Metadata({content-type=[application/grpc], grpc-encoding=[identity], grpc-accept-encoding=[identity,deflate,gzip]})

但我知道从元数据到它还有一条线,那就是

如何从包含订阅 ID 的 Header 中提取最后一个响应。我确实尝试了很多选择,但我在这里迷路了。

0 投票
1 回答
58 浏览

maven - 协议版本 3.2 java 文件

我已经使用 protoc 3.2 编译器编译了我的 Protoc 文件。当我尝试将它与下面显示的 maven 依赖项一起使用时,POM 文件给了我错误,并且所有依赖项都没有解决。想知道我应该使用的正确版本的 grpc-all 与使用 protoc 编译器 3.2.0 生成的 Java 代码兼容

我的 pom 文件如下所示:

另外,我得到的错误是, 在此处输入图像描述

0 投票
1 回答
139 浏览

java - 读取头数据的回调方法卡住了。使用 Grpc JAVA

我正在使用 Protoc 3.0 并编写了回调方法来使用 java 读取 GRPC 流数据。

现在我看到的是,一旦我到达 onHeaders Metohd,程序就会无限期地等待。这正常吗。一旦完成标头方法,我如何恢复读取正常的流数据?

EDIT-1 所以链接就像-

0 投票
2 回答
2308 浏览

java - GRPC 服务器获取客户端取消

我已经为带有 grpc 的网络摄像头流创建了一个微服务。流工作正常,但流的取消仅在客户端有效。

如果客户端调用 CancelableContext.cancel,视频流停止,但服务器仍在使用 cam 流式传输视频。如果调用取消,服务器会抛出一个传输失败异常。

是否可以捕获此异常以在服务器端停止流式传输或其他操作?

流式传输从一个简单的请求开始,该请求具有一个带有 State.START 的枚举。如果我调用上面的代码将状态更改为 STOP 我成为一个例外:

我读过这可能是一个错误。

是否可以在服务器端获取 Sessions 或 Connections 或其他东西?

谢谢

0 投票
6 回答
12361 浏览

kubernetes - gRPC 负载均衡

我已经阅读了https://github.com/grpc/grpc/blob/master/doc/load-balancing.md上的负载平衡页面,但仍然对后端 GRPC 之间负载平衡的正确方法感到困惑实例。我们正在部署多个 gRPC“微服务”实例,并希望我们的其他 gRPC 客户端能够在它们之间进行路由。我们将这些部署为 Kubernetes(实际上是 Google Container Engine)中的 pod。

谁能解释在 gRPC 服务器之间负载平衡 gRPC 客户端请求的“推荐”方法?客户似乎需要了解端点——难道不能利用 Container Engine 中内置的 LoadBalancer 来提供帮助吗?

0 投票
1 回答
184 浏览

protocol-buffers - protobuff 编译器如何区分不同的服务及其具有相同标识符/标签的消息?

问题是关于反序列化过程。我认为第一个字节描述了标签和相应的在线类型。但是如果两个服务在他们的消息中使用相同的标签/标识符和数据类型呢?

0 投票
0 回答
582 浏览

java - Wildfly Swarm 中的类加载如何工作?请求期间的 NoClassDefFoundError

我有一个微服务野蝇群。它有一些从 google protobuf 生成的代码。但是如果我从命令行使用 java -jar ..... 开始并从浏览器调用服务器,我会得到以下异常。如果我从 Eclipse 启动它,则不会发生错误。

谁能解释为什么在 IDE 中一切正常并且从命令行我得到这个错误?

这是我的主要课程 mit mani 功能:

0 投票
1 回答
902 浏览

java - Scala (java) grpc 异步拦截器状态传播

问题标题可能信息量不大,因为我正在尝试实现多种功能。我想根据他发送的标头授权调用者并将此信息传播到 gRPC 方法处理程序。问题在于授权过程的异步性质。我最终得到了这个:

这有效(我的意思是,运行没有异常:)),但是当我AuthInterceptor.BOTID_CONTEXT_KEY.get在我的方法处理程序中这样做时,它会产生null.

也许,有更好的方法来处理异步的东西?

0 投票
2 回答
1961 浏览

grpc - GRPC Client 拦截 Java 异常

我试图拦截 GRPC 存根抛出的异常 io.grpc.StatusRuntimeException,并将它们转换为 REST 异常。我需要实现 ClientInterceptor 不知道如何?