有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java io。grpc。StatusRuntimeException:未实现:未知服务manipula。核心2。果心原型。离心机

我很难用正确的方式编译这个JAVA原型文件,因为到现在为止2天,我先在命令行上尝试并下载了JAVA插件,但只生成了一个文件,然后切换到maven方法,成功了,但还没有完全成功

这是原始文件:

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容器上的离心机(用于实时WebSocket)

以下是我从几天以来收到的错误:

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";

请问你对这个问题有什么想法,怎么解决?欢迎您的观点


共 (1) 个答案

  1. # 1 楼答案

    我必须使用与服务器上相同的包名

    package api;