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

JavagRPC服务器流模型

姬高扬
2023-03-14

我正在通过以下示例寻找一个用于服务器端流的客户端侦听器示例-https://grpc.io/docs/languages/java/basics/

我已经按照文档-https://github.com/grpc/grpc/blob/master/doc/keepalive.md

所有的例子都表明,当向服务器发出请求时,服务器将作为异步或一元模型响应,或者客户端可以与新请求聊天。每次请求都必须发送到服务器进行响应。连接保持活动时间更长;这很好。

问:客户端是否有可能在不使用BIDI(双向)模型的情况下发送一个请求并无限期地从服务器接收响应?在这种情况下,只要服务器上有数据可用,它就会继续发送,而不需要进一步的请求。同样,这种通信是单播,而不是广播;这意味着每个连接(用户)都是唯一的,可以根据用户的数据进行响应。

不确定,但有一种方法可以是-服务器将请求对象保持在缓存中某个位置的活动状态并保持响应?客户端是否必须使用轮询循环来无限期地侦听响应?

期待能解决这个问题的例子。

共有1个答案

年健
2023-03-14

一个客户端请求和许多服务器响应是“服务器流”您将仅对响应使用stream关键字。

您可以将阻塞或异步API用于服务器流式RPC。示例中使用了阻塞API,因为阻塞操作通常更加清晰。但也可以使用异步存根。

对于服务器流,异步客户端API让您传递请求和响应观察器来启动调用。之后,它看起来与bidi示例相同,只是客户端不再发送任何消息。服务器可以在任何时候发送消息时调用StreamObserver,当新消息到达时,将调用客户端的StreamObserver。

要查看示例,可以用异步存根替换listFeatures()的阻塞存根:

final CountDownLatch finishLatch = new CountDownLatch(1);
asyncStub.listFeatures(request, new StreamObserver<Feature>() {
  int i;

  @Override public void onNext(Feature feature) {
    info("Result #" + i + ": {0}", feature);
    if (testHelper != null) {
      testHelper.onMessage(feature);
    }
    i++;
  }

  @Override public void onCompleted() {
    finishLatch.countDown();
  }

  @Override public void onError(Throwable t) {
    warning("RPC failed: {0}", Status.fromThrowable(t));
    if (testHelper != null) {
      testHelper.onRpcError(t);
    }
    finishLatch.countDown();
  }
});
finishLatch.await();
 类似资料:
  • Tensorflow 1.12发行说明指出:“Keras模型现在可以直接导出为SavedModel格式(tf.contrib.saved_model.save_Keras_mode()),并与Tensorflow服务一起使用。”。所以我试了一下- 我用一行代码导出了一个简单的模型。但是,Tensorflow服务不识别模型。我猜问题出在docker调用上,可能是模型定义中缺少了“signature_

  • 由于各种原因,Emacs 启动比较耗时。可以启动一个 Emacs 的守护进程 emacs --daemon 然后通过 emacsclient 来连接服务器 emacsclient -t --alternate-editor jed file -t 在当前控制台打开 emacs 窗口 --alternate-editor jed 如果不能连接到 emacs 服务器,则使用 jed 编辑器 也可

  • 使用流程 使用ModelService的流程如下,首先初始化Xiaomi Cloud-ML客户端环境。 cloudml init 然后上传模型文件到FDS中,或者在TensorFlow代码中直接导出模型到FDS。 最后使用cloudml命令行工具提交创建模型服务即可,通过 -a 参数还可以实现同时加载多个模型版本等功能。 -u表示模型的fds路径,通过挂载fds bucket到/fds,再指定模

  • 我正在研究和使用Spring Cloud数据流进行一些概念验证,但遇到了一些问题: 我正在尝试启动本地数据流服务器。为了实现这一点,我创建了一个Spring Boot应用程序,并用< code > @ EnableDataFlowServer 对其进行了注释。 当我尝试运行时,我收到以下错误: 我在寻求帮助,我读到这可能是一个pom的版本问题。实际上我的< code>pom.xml是: 谁能帮我?

  • 英文原文:http://emberjs.com/guides/models/connecting-to-an-http-server/ 如果Ember应用需要从HTTP服务器加载JSON数据,本指南将介绍如何配置Ember Data来从服务器端加载记录,不论服务器返回的数据格式是什么样子。 仓库使用了一个称为适配器,知道如何通过网络进行通信的对象。默认情况下,仓库会使用DS.RESTAdapter

  • 主要内容:实现,步骤 1,Service.java,步骤 2,Service1.java,Service2.java,步骤 3,InitialContext.java,步骤 4,Cache.java,步骤 5,ServiceLocator.java,步骤 6,ServiceLocatorPatternDemo.java,步骤 7服务定位器模式(Service Locator Pattern)用在我们想使用 JNDI 查询定位各种服务的时候。考虑到为某个服务查找 JNDI 的代价很高,服务定位器模