[英]io.grpc.StatusRuntimeException: UNIMPLEMENTED: Method not found
[英]io.grpc.StatusRuntimeException: UNIMPLEMENTED: unknown service manipula.core2.core.proto.Centrifugo
我很難以正確的方式為 JAVA 編譯這個 proto 文件,因為現在最多 2 天,我首先嘗試在命令行上下載 java 的插件,但只生成一個文件,然后切換到 Z401405D9AFEE61070 方法成功但不完全!
這是原型文件:
syntax = "proto3";
package manipula.core2.core.proto;
option java_multiple_files = true;
option java_package = "manipula.core2.core.proto";
option java_outer_classname = "centrifugo";
message ClientInfo {
string user = 1;
string client = 2;
bytes conn_info = 3;
bytes chan_info = 4;
}
message Publication {
string uid = 1;
bytes data = 2;
ClientInfo info = 3;
}
message Error {
uint32 code = 1;
string message = 2;
}
enum MethodType {
PUBLISH = 0;
BROADCAST = 1;
UNSUBSCRIBE = 2;
DISCONNECT = 3;
PRESENCE = 4;
PRESENCE_STATS = 5;
HISTORY = 6;
HISTORY_REMOVE = 7;
CHANNELS = 8;
INFO = 9;
}
message Command {
uint32 id = 1;
MethodType method = 2;
bytes params = 3;
}
message Reply {
uint32 id = 1;
Error error = 2;
bytes result = 3;
}
message PublishRequest {
string channel = 1;
bytes data = 2;
}
message PublishResponse {
Error error = 1;
PublishResult result = 2;
}
message PublishResult {}
message BroadcastRequest {
repeated string channels = 1;
bytes data = 2;
}
message BroadcastResponse {
Error error = 1;
BroadcastResult result = 2;
}
message BroadcastResult {}
message UnsubscribeRequest {
string channel = 1;
string user = 2;
}
message UnsubscribeResponse {
Error error = 1;
UnsubscribeResult result = 2;
}
message UnsubscribeResult {}
message DisconnectRequest {
string user = 1;
}
message DisconnectResponse {
Error error = 1;
DisconnectResult result = 2;
}
message DisconnectResult {}
message PresenceRequest {
string channel = 1;
}
message PresenceResponse {
Error error = 1;
PresenceResult result = 2;
}
message PresenceResult {
map<string, ClientInfo> presence = 1;
}
message PresenceStatsRequest {
string channel = 1;
}
message PresenceStatsResponse {
Error error = 1;
PresenceStatsResult result = 2;
}
message PresenceStatsResult {
uint32 num_clients = 1;
uint32 num_users = 2;
}
message HistoryRequest {
string channel = 1;
}
message HistoryResponse {
Error error = 1;
HistoryResult result = 2;
}
message HistoryResult {
repeated Publication publications = 1;
}
message HistoryRemoveRequest {
string channel = 1;
}
message HistoryRemoveResponse {
Error error = 1;
HistoryRemoveResult result = 2;
}
message HistoryRemoveResult {}
message ChannelsRequest {}
message ChannelsResponse {
Error error = 1;
ChannelsResult result = 2;
}
message ChannelsResult {
repeated string channels = 1;
}
message InfoRequest {}
message InfoResponse {
Error error = 1;
InfoResult result = 2;
}
message InfoResult {
repeated NodeResult nodes = 1;
}
message NodeResult {
string uid = 1;
string name = 2;
string version = 3;
uint32 num_clients = 4;
uint32 num_users = 5;
uint32 num_channels = 6;
uint32 uptime = 7;
Metrics metrics = 8;
}
message Metrics {
double interval = 1;
map<string, double> items = 2;
}
service Centrifugo {
rpc Publish (PublishRequest) returns (PublishResponse) {}
rpc Broadcast (BroadcastRequest) returns (BroadcastResponse) {}
rpc Unsubscribe (UnsubscribeRequest) returns (UnsubscribeResponse) {}
rpc Disconnect (DisconnectRequest) returns (DisconnectResponse) {}
rpc Presence (PresenceRequest) returns (PresenceResponse) {}
rpc PresenceStats (PresenceStatsRequest) returns (PresenceStatsResponse) {}
rpc History (HistoryRequest) returns (HistoryResponse) {}
rpc HistoryRemove (HistoryRemoveRequest) returns (HistoryRemoveResponse) {}
rpc Channels (ChannelsRequest) returns (ChannelsResponse) {}
rpc Info (InfoRequest) returns (InfoResponse) {}
}
我的客戶在這里:
ManagedChannel channel = ManagedChannelBuilder.forAddress("192.168.99.100", 10000).usePlaintext().build();
CentrifugoGrpc.CentrifugoBlockingStub apiWs = CentrifugoGrpc.newBlockingStub(channel);
ByteString dataToSend = ByteString.copyFromUtf8("message");
PublishRequest request = PublishRequest.newBuilder().setChannel("public:test").setData(dataToSend).build();
try {
PublishResponse pubResp = apiWs.publish(request);
System.out.println("+************************+");
System.out.println(pubResp);
System.out.println("+************************+");
} catch (final Exception e) {
System.out.println(e);
}
服務器是安裝在 Docker 容器上的 Centrifugo(用於實時 websockets)。
這是我幾天以來收到的錯誤:
io.grpc.StatusRuntimeException: UNIMPLEMENTED: unknown service manipula.core2.core.proto.Centrifugo
我認為問題出在此處的 proto 文件上的配置:
syntax = "proto3";
package manipula.core2.core.proto;
option java_multiple_files = true;
option java_package = "manipula.core2.core.proto";
option java_outer_classname = "centrifugo";
請對這個問題有任何想法以及如何解決它? 歡迎您的觀點!
我必須使用與服務器上相同的 package 名稱。
package api;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.