本文介紹了如何在MATLAB中訪問(wèn)GRPC服務(wù)器?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我們已將DataAccess邏輯移動(dòng)到Microservice,目前使用C++將其實(shí)現(xiàn)為GRPC,并且我們能夠在C#客戶端和C++客戶端中利用它。
現(xiàn)在我們必須在Matlab客戶端(舊版)中使用此DataAccess GRPC。因此,我試圖找到一種從Matlab訪問(wèn)GRPC的方法,但發(fā)現(xiàn)沒(méi)有對(duì)此的官方支持。
我找到了兩個(gè)解決方案
使用Java
我已按照此thread中的建議進(jìn)行了嘗試。我已經(jīng)使用Eclipse創(chuàng)建了一個(gè)sampleGRPC客戶端java。但是,當(dāng)我嘗試從MATLAB訪問(wèn)該類/方法時(shí),我面臨以下問(wèn)題
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)
討論過(guò)here,它說(shuō)這是不可能的。現(xiàn)在有沒(méi)有人能告訴我這是否可能,或者我遺漏了什么?
使用Matlab協(xié)議編譯器[Farsounder]
接下來(lái),我嘗試使用Farsounder解決方案v2.5.0創(chuàng)建基于this的存根文件。
只有在創(chuàng)建了Protoc.exe之后,我才意識(shí)到它是針對(duì)ProtoV2的。因此,我現(xiàn)在嘗試使用Protov3Matlab。
但是構(gòu)建說(shuō)明在這里并不清楚,而且它有一個(gè)cmake文件,我不知道如何運(yùn)行它。有沒(méi)有人能幫我為Windows環(huán)境構(gòu)建此軟件?
我是Java和Matlab的新手,如果我錯(cuò)過(guò)了任何明顯的東西,很抱歉。
提前感謝。
推薦答案
我能夠創(chuàng)建Protoc.exe。
步驟:
-
簽出最新的協(xié)議緩沖區(qū)源代碼。
已使用Farsounder MATLAB源代碼和cmake文件更新源代碼。
遵循h(huán)ttps://github.com/protocolbuffers/protobuf/blob/master/cmake/README.md生成源。
這篇關(guān)于如何在MATLAB中訪問(wèn)GRPC服務(wù)器?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,