如何在MATLAB中访问GRPC服务器?
我们已将DataAccess逻辑移动到Microservice,目前使用C++将其实现为GRPC,并且我们能够在C#客户端和C++客户端中利用它。
现在我们必须在Matlab客户端(旧版)中使用此DataAccess GRPC。因此,我试图找到一种从Matlab访问GRPC的方法,但发现没有对此的官方支持。
我找到了两个解决方案
使用Java
我已按照此thread中的建议进行了尝试。我已经使用Eclipse创建了一个sampleGRPC客户端java。但是,当我尝试从MATLAB访问该类/方法时,我面临以下问题
Java exception occurred:
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava/lang/Object;)V
at io.grpc.Metadata$Key.validateName(Metadata.java:630)
at io.grpc.Metadata$Key.<init>(Metadata.java:638)
at io.grpc.Metadata$Key.<init>(Metadata.java:568)
at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:743)
at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:738)
at io.grpc.Metadata$Key.of(Metadata.java:594)
at io.grpc.Metadata$Key.of(Metadata.java:590)
at io.grpc.internal.GrpcUtil.<clinit>(GrpcUtil.java:84)
at io.grpc.internal.AbstractManagedChannelImplBuilder.<clinit>(AbstractManagedChannelImplBuilder.java:83)
at io.grpc.netty.NettyChannelProvider.builderForAddress(NettyChannelProvider.java:37)
at io.grpc.netty.NettyChannelProvider.builderForAddress(NettyChannelProvider.java:23)
at io.grpc.ManagedChannelBuilder.forAddress(ManagedChannelBuilder.java:37)
讨论过here,它说这是不可能的。现在有没有人能告诉我这是否可能,或者我遗漏了什么?
使用Matlab协议编译器[Farsounder]
接下来,我尝试使用Farsounder解决方案v2.5.0创建基于this的存根文件。 只有在创建了Protoc.exe之后,我才意识到它是针对ProtoV2的。因此,我现在尝试使用Protov3Matlab。 但是构建说明在这里并不清楚,而且它有一个cmake文件,我不知道如何运行它。有没有人能帮我为Windows环境构建此软件?我是Java和Matlab的新手,如果我错过了任何明显的东西,很抱歉。
提前感谢。
解决方案
我能够创建Protoc.exe。 步骤:
- 签出最新的协议缓冲区源代码。
- 已使用Farsounder MATLAB源代码和cmake文件更新源代码。
- 遵循https://github.com/protocolbuffers/protobuf/blob/master/cmake/README.md生成源。
相关文章