问题标签 [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.
microservices - grpc 给出“内部:连接因未知原因关闭”
我们正在使用 grpc 进行微服务间通信。我们正在使用 grpc 版本:1.2.0。对于特定测试,我们不断从其中一个微服务中看到此错误:
这只发生在最初的几个调用中,或者第一个尝试使用 grpc 调用另一个微服务的测试中。后续调用成功,使用相同的代码路径成功。所有微服务都已启动并正在运行。
有任何想法吗?
redis - 使用 gRPC 进行文件传输
使用 gRPC 和协议缓冲区将文件或图像从一个进程传输到另一个进程的标准方法是什么?该文件从 1MB 到 6MB。
基本上我想知道如何为 python、C++ 和 golang 实现发送者/接收者代码对。
http://github.com/johanbrandhorst/chunker
这是迄今为止我能找到的最接近 golang 的。我在想它是否可以扩展到 python 和 c++。首选具有较少依赖性的更通用的方法。
我正在创建多服务以通过 IPC 消息传递交换图像 btw 机器/进程。另一种选择是使用共享内存。我不确定Redis是否可以存储图像
java - Gradle在项目之外编译依赖
我的应用程序有一个前端和一个后端存储库。后端是用 Go 编写的,并通过 gRPC 提供 API。生成的 gRPC Java 文件以backend-repo/proto-gen/java/
(so backend-repo/proto-gen/java/com/myApp/Users.java
) 结尾。
在我的前端 android repo 中,我将后端 repo 子模块到一个名为server
. 我想修改我的以从后端 build.gradle
编译文件。.java
我对 Android 开发非常陌生,并且正在努力找出正确的方法。
这是我的一个片段,app/build.gradle
但它失败了,因为它找不到包com.google.protobuf
。
java - Google Speech Api 凭据的代理身份验证
我正在尝试配置谷歌语音 api 以在公司防火墙内的项目中工作。我已将 SpeechSettings 配置如下:
使用它可以在代理网络之外正确工作并启动语音识别会话。但它无法在代理身份验证网络下转录任何内容,并且UNAVAILABLE: Transport closed for unknown reason
在 ApiStreamObserver 类中出现此错误并超时。我认为 Grpc 传输由于防火墙超时而被关闭。
在创建语音客户端会话时是否可以使用代理身份验证凭据进行身份验证?谢谢。
apache-spark - io.grpc.StatusRuntimeException:在 Spark 中使用 Grpc 客户端时中止
我正在尝试运行 spark (2.2) 作业以使用 GRPC (1.1.2) 客户端调用从服务器获取一些数据。通过 spark 运行此代码时出现此错误。为一小部分运行相同的作业可以正常工作。根据我的研究,我知道 ABORTED 消息是因为一些并发问题,所以我猜这是因为客户端无法创建超过一定数量的存根,但我不知道如何继续。此外,我知道 GRPC 服务器可以很好地处理大量请求,而我远低于它可以处理的请求数量。有任何想法吗?
根据要求添加更多信息:我的客户端 CatalogGrpcClient 有这些方法来处理通道和请求:
我在方法 extract 中使用 getCatalogListingData 方法,该方法用于映射到 spark 作业中的案例类
这是调用提取的火花代码。itemsMissingDetails 是一个数据框,其中有一列“item”,它是唯一项目 ID 的列表。zipWithIndex 和下面的映射是为了让我在每个请求中将 50 个项目 ID 传递给 GRPC svc。
ABORTED 错误实际上是我的客户在很长一段时间(约 30 分钟到 1 小时)后抛出的。当我开始这项工作时,它会从 GRPC svc 获得我需要的信息,用于每个工人的几千个项目。在此之后,作业挂起(在每个工人身上),经过很长时间的等待(约 30 分钟到 1 小时),它会因上述异常而失败或继续进行。我无法始终如一地获得 StatusRuntimeException。
grpc - gRPC - 建立到同一服务器的通道
假设我有一个托管服务器的 gRPC Java 服务。
因此,当客户想要调用此服务时,他们使用:
没问题。
现在,如果我想从同一个 JVM 调用我的服务怎么办?这甚至可能吗?或者这可能是完全无效的?
java - proto2 扩展可以与 grpc 一起使用吗?
我有一个用 GO 编写的 grpc 客户端和一个用 Java 编写的 grpc 服务器(两者都使用相同的原型文件(语法 2)。
我的 grpc 方法接收一条可能包含扩展名的消息。我能够在客户端构建包含所需扩展的消息并将其发送到服务器。但是当我尝试阅读服务器上的消息时,我的扩展名作为未知字段可用。(换句话说, Java 中的entity.hasExtension(extension)返回 false)。
所以我的问题是 grpc 是否允许在作为方法参数提供的消息中使用扩展。如果没有,有没有办法将未知字段转换为特定类型的字段?
我的原型文件:
basic_types.Entity是包含扩展的基本消息:
并且可以像这样扩展:
任何帮助或提示将不胜感激。
grpc - 处理 grpc-java 中的网络错误
如何使用 gRPC-java 实施策略来检测并尝试从网络错误中恢复?我知道 UNAVAILABLE 状态可能意味着网络错误,但这并不能告诉我它是哪种网络错误 - 而且 UNAVAILABLE 也可以从服务器发回。
在 Java RMI 中,我们被告知要注意网络问题,并且我们可以区分例如 ConnectionException,它是连接被拒绝错误。我们如何使用 gRPC 做到这一点?
java - 为什么 gRPC 仅在 Windows 上每秒抛出“已建立的连接被主机中的软件中止”?
仅在 Windows 上,我有一个 grpc 服务器,每秒抛出此 INFO 级堆栈跟踪:
这可能与登录https://github.com/grpc/grpc-java/issues/1768的内容相同
再一次,我只在 Windows 上收到此错误!
无论此问题如何,该应用程序似乎都可以正常运行。
当我使用 io.grpc.Server 启动一个简单的“hello world”应用程序时,我看不到这个 INFO 堆栈跟踪。
但是当我使用我的真实应用程序时,它在 grpc 服务器和在应用程序期间保持打开状态的码头服务器之间打开了双向 http2 流连接......我每秒收到一次这条消息,淹没了我的日志。
NettyServerTransport
将日志记录转为水平是否安全WARN
?还是我应该担心这条消息的频率?
grpc-java - 使用流优雅关闭 Java GRPC 服务器
我正在尝试为具有一些流 API 的 GRPC 服务添加正常关闭。基本上我想在关闭我的应用程序之前等待所有 GRPC 调用完成。流式调用最多可能需要几分钟(大文件上传),而且当前的 GRPC Java 实现似乎不尊重这种用例。
我的服务用 Java 实现并使用 GRPC 1.7.0。所以我只是grpcServer.shutdown()
根据文档调用 which 应该:
启动有序关闭,其中先前存在的呼叫继续,但新呼叫被拒绝。
之后我立即打电话grpcServer.awaitTermination()
阻止,直到我的服务处于TERMINATED
状态。
但是我看到 GRPC 实际上最多等待 5 秒,然后才能在TERMINATED
状态下发送服务,即使有活动流也是如此。
所以似乎grpcServer.shutdown()
没有按照文档所说的那样做,我想知道我应该做些什么来支持我的用例。我认为 GRPC 应该支持它(似乎是一个很常见的用例)。如果不是,我将需要手动跟踪活动流,这是可行的,看起来不像黑客。