当前位置: 首页 > 知识库问答 >
问题:

在GRPC Ruby客户端中中止GRPC服务器流连接

公孙宸
2023-03-14

将grpc定义的服务视为:

rpc :StreamingEvents, StreamingEventRequest, stream(StreamingEventResponse)

并利用客户端连接到此服务类似于:

call = stub.streaming_events(StreamingEventRequest.new)

call.each do |response|
  pp response
end

如果我们要在一个单独的线程中生成调用,那么处理终止一个永远运行、我们不想再使用的grpc连接的正确方法是什么?是否有任何连接或流控制方法可以调用?

共有1个答案

经福
2023-03-14

挖掘源代码并拆解所有这些是如何工作的。如果您想使用流控制做任何高级工作,您必须传入return_op参数以接收操作符对象来控制流。这是一些示例代码:

传球方法论:

op = stub.streaming_events(StreamingEventRequest.new, return_op: true) do |response|
  pp response
end

t = Thread.new do
  op.execute
rescue GRPC::Cancelled => e
  puts "this will terminate with an exception when we hit cancel - #{e}"
end

# controls for the operation
op.status
op.cancelled?
op.cancel # terminates connection and raises GRPC::Cancelled in the thread.

枚举器示例:

op = stub.streaming_events(StreamingEventRequest.new, return_op: true)

t = Thread.new do
  call = op.execute
  call.each do |response|
    pp response
  end
rescue GRPC::Cancelled => e
  puts "this will terminate with an exception when we hit cancel - #{e}"
end

# controls for the operation
op.status
op.cancelled?
op.cancel # terminates connection and raises GRPC::Cancelled in the thread.
 类似资料:
  • 我有一个gRPC客户端,它使用两个bidi流。由于目前未知的原因,当我们每小时发送一次keepAlive ping时,两个流都会调用带有的onError。 为了处理重新连接,我在java伪代码中实现了以下重试机制。我将在评论中澄清任何必要的内容。 机制看起来是这样的: 虽然我们试图关闭旧的流,但在服务器端,我们看到2个HA节点上打开了2个连接。我对服务器端没有任何控制权,我只需要在客户端处理重新连

  • 下面的代码片段显示了如何在gRPC AspNet核心应用程序中启用gRPC web: 客户端应用程序的代码如下所示:

  • 我对gRpc很陌生,已经开始探索它们的基础知识(在C语言中)。我想获得有关如何发送心跳以检查客户端/服务器是否仍处于连接状态以及在断开连接时采取恢复措施的指导。任何示例或参考任何文档/文章都将有助于我开始学习。谢谢

  • 我有一个示例Spring启动应用程序来运行图形QL服务器,具有作为客户端,我的pom有以下依赖项: 当我尝试从客户端连接时,出现以下错误: 狩猎决议好心建议。 我还有几个问题: 我应该使用SimpleGraphQLHttpServlet将请求路由到endpoint吗 我正在React UI上使用apollo client,那么它是强制使用apollo server还是spring boot可以工作

  • 我创建了一个DotNet Core 3.1 gRPC服务器。 是否可以在DotNet Frametwork 4.8客户端中使用此服务器? 我引用了这些包: 谷歌。Protobuf Grpc。核心 Grpc.Core.Api 我的测试代码如下所示: 我复制了问候语。来自服务器的proto。。。 但是它在上面的代码中找不到Greeter。 这样做有可能吗? 更新。。。。。。。 我设法将Protos放在

  • 无法连接到本链接中提到的greeter grpc服务-https://docs . Microsoft . com/en-us/aspnet/core/tutorials/grpc/grpc-start?欢迎客户端的view=aspnetcore-3.0,它是使用grpc.core库(< code>Grpc)从. net framework应用程序编写的。核心2.24.0和< code>Grpc。