【问题标题】:grpc-java async client (with grpc C++ async server)grpc-java 异步客户端(带有 grpc C++ 异步服务器)
【发布时间】:2019-08-28 02:31:16
【问题描述】:

C++ Async 描述了如何创建一个异步服务器和一个相应的异步客户端来与之通信。我已经设法在 Microsoft Viual Studio 中创建了它。

我现在需要一个 Java 客户端来与 C++ 服务器通信 - 我无法找到与 C++ 通信的 Java 等效客户端(C++)。

任何指针将不胜感激

【问题讨论】:

    标签: grpc grpc-java


    【解决方案1】:

    “异步”是特定语言 API 的一部分;它不是 RPC 类型的一部分。因此,您可以使用任何类型的 Java 客户端来访问您的 C++ 异步服务器。

    Java 提供了三种 API 样式:异步(StreamObserver)、阻塞和 Future(Guava 的 ListenableFuture)。 grpc-java开头可以参考quick start或examples

    【讨论】:

    • 谢谢埃里克。问题是 - 我尝试对异步 C++ 服务器使用标准阻塞 Java 客户端,但我得到了 UNIMPLEMENTED。我将很快发布更多信息(在 mo 的机场休息室)。我想知道异步 C++ 服务是否需要 Java 客户端传递诸如 CompletionQueue 之类的详细信息,这在 Java API 中显然是不存在的(因为它是特定于 API 的,正如你所提到的)。
    • 未实现通常表示服务器未实现 grpc 服务/方法。所以这与“异步”和 Java API 无关。常见问题是:客户端与错误的服务器通信,服务器忘记注册特定的 grpc 服务,服务器未实现一个方法,但同一服务的其他方法可用。
    • 我回到了基本的欢迎程序示例。 Sever 是使用 MS Visual Studio 19 在 Windows 上编译和运行的 C++。我可以看到 Java greeter 客户端对此进行了处理。我之所以看这个是因为在非异步方法中,两个同时的客户端调用正在破坏后端进程(我定价 Trades 和 Quantlib 类正在破坏)。好像两个呼叫加入了同一个线程。我希望 async 能给我在 C++ 端更好的过程控制和分离。看起来不错 - 到目前为止。感谢您的帮助,不胜感激。
    • 我用三个 Java 客户端在异步模式下对一台 C++ 服务器进行了测试。每个客户都在执行一千次定价电话。在大多数运行中,客户端优雅地退出,但在某些情况下 - 我一直看到这个:原因:io.grpc.netty.shaded.io.netty.channel.AbstractChannel$AnnotatedSocketException:地址已在使用中:没有更多信息:本地主机/0:0:0:0:0:0:0:1:50051 原因:java.net.BindException:地址已在使用中:没有更多信息......我在 C++ 服务器端没有发现异常。我无法理解解释。
    猜你喜欢
    • 2018-01-11
    • 2020-03-08
    • 2019-01-16
    • 1970-01-01
    • 2023-03-12
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多