我正在尝试将 GRPC 与 Quarkus 一起使用,following the guide(编辑:我使用的是 1.13.7.Final 版,因此使用稍旧的指南,因为 @GrpcService
在 v2 中已更改)我'在我的 pom 中有 io.quarkus:quarkus-grpc 依赖项,我可以编写一个 proto 文件并生成 java 类。然后我扩展了实现基础(见下文)。但是在启动应用程序时,没有在默认端口 9000 上启动服务器,并且在日志中没有错误,我的服务唯一提到的是 Remove unused class bean
和类名。
这是我的实现类的样子(不包括导入):
@Singleton
public class HelloService extends MutinyGreeterGrpc.GreeterImplBase {
@Override
public Uni<HelloReply> sayHello(HelloRequest request) {
return Uni.createFrom().item(() -> HelloReply.newBuilder().setName(request.getName()).build());
}
}
是否有任何明显我可能遗漏的地方?
额外的尝试:
我已经从 github 中查看了 quarkusio/quarkus-quickstarts,更改为 1.13.7.Final 标签,然后运行 mvn clean compile quarkus:dev
,我收到以下错误(大致):
javax.enterprise.inject.spi.DeploymentException: Found 2 deployment problems:
[1] Unsatisfied dependency for type examples.GteeterGrpc$GreeterBlockingStub and qualifiers [@Default]
- java member: io.quarkus.grpc.examples.hello.HelloWorldEnpoint#blockingHelloService
- declared on CLASS bean [types=[io.quarkus.grpc.examples.hello.HelloWorldEnpoing, java.lang.Object]. qualifiers=[@Default, @Any], target=io.quarkus.grpc.examples.hello.HelloWorldEnpoint]
这是在运行 openjdk 11.0.11 的 Ubuntu 20.04 上
答案 0 :(得分:0)
我猜您正在使用比 1.11 更新的 Quarkus 版本并使用 1.11 的指南(这是您链接的内容)。
在最近的 Quarkus 版本中,gRPC 服务的实现必须用 @GrpcService
注释(而不是 @Singleton
- 它以前的样子)。所以你的类应该看起来像这样:
@GrpcService
public class HelloService extends MutinyGreeterGrpc.GreeterImplBase {
@Override
public Uni<HelloReply> sayHello(HelloRequest request) {
return Uni.createFrom().item(() -> HelloReply.newBuilder().setName(request.getName()).build());
}
}
指南的当前版本:https://quarkus.io/guides/grpc-service-implementation