0

我正在尝试按照指南将 GRPC 与 Quarkus 一起使用(编辑:我使用的是 1.13.7.Final 版本,因此使用了@GrpcServicev2 中更改的稍旧的指南)我有 io.quarkus:quarkus-grpc在我的 pom 中,我可以编写一个 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 上

4

1 回答 1

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

于 2021-07-28T05:50:15.413 回答