Как в groovy использовать метод newBlockingStub из буферов протокола Google? - PullRequest
0 голосов
/ 05 марта 2020

В моем Protocol.proto файле у меня RP C, определенный следующим образом:

message Task {
    // My own fields
}  
message Result {
    // My own fields
}

service ClientListener {
    rpc SendTask(Task) returns (Result);
}

В языковом файле Groovy я хочу создать блокирующий клиент. Проблема в том, что я не могу найти способ использовать метод newBlockingStub, если я пытаюсь вызвать его так:

import Protocol.ClientListener;
import Protocol.ClientListener.BlockingStub;

ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 8080).usePlaintext().build();
BlockingStub stub = ClientListener.newBlockingStub(channel);

затем

No signature of method: static  ClientListener.newBlockingStub() is applicable for
argument types: (io.grpc.internal.ManagedChannelOrphanWrapper) values: 
[ManagedChannelOrphanWrapper{delegate=ManagedChannelImpl{logId=1, 
                                               target=localhost:8080}}] 
Possible solutions: newBlockingStub(com.google.protobuf.BlockingRpcChannel)

выдается ошибка .

В качестве альтернативы я вижу, что другие учебники импортируют класс CustomServiceName Grp c, но когда я пытаюсь импортировать такой класс:

import Protocol.ClientListenerGrpc;

, я получаю ошибка

Groovy: unable to resolve class Protocol.ClientListenerGrpc

Итак, как импортировать метод newBlockingStub ?

Мой файл maven имеет следующие зависимости:

<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.8.0</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-netty-shaded</artifactId>
    <version>1.27.2</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-protobuf</artifactId>
    <version>1.27.2</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-stub</artifactId>
    <version>1.27.2</version>
</dependency>
<dependency>
    <groupId>org.xolstice.maven.plugins</groupId>
    <artifactId>protobuf-maven-plugin</artifactId>
    <version>0.6.1</version>
    <type>pom</type>
</dependency>

и компилирует все прото классы для Task и Result и ClientListener, но не ClientListenerGrpc

Кажется, что maven не компилирует класс ClientListenerGrp c, почему?

...