无法在Quarkus上启动gRPC服务器-无法找到暴露`BindableService`的bean

时间:2020-06-15 18:05:41

标签: java quarkus grpc-java

我在quarkus 1.5.1.Final中有一个可用的gRPC服务,它的最终版本为合并的*.proto,并在实现具服务的情况下构建了类。

然后,我将服务组件分解到它自己的项目中,该组件依赖于生成的类组件(模块上方),但是当我尝试使用./mvnw quarkus:dev启动服务应用程序时,我无法启动gRPC服务器:

WARN  [io.qua.grp.dep.GrpcServerProcessor] (build-7) Unable to find beans exposing the `BindableService` interface - not starting the gRPC server

这是服务:

package org.ikeda.address.grpc;

import io.smallrye.mutiny.Uni;
import org.ikeda.address.grpc.service.AddressManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Inject;
import javax.inject.Singleton;

@Singleton
public class AddressGrpcService extends MutinyAddressServiceGrpc.AddressServiceImplBase {
    private Logger log = LoggerFactory.getLogger(AddressGrpcService.class);

    @Inject
    private AddressManager addressManager;

    @Override
    public Uni<AddressResponse> getAddress(PageRequest request) {
        log.debug("Page size: {}, Page number: {}", request.getPageSize(), request.getPageNumber());

        return this.addressManager
                .getPaginatedAddresses(request.getPageNumber(), request.getPageSize())
                .map(addresses -> AddressResponse.newBuilder().addAllAddresses(addresses).build());
    }
}

当我将生成的类与实现并置在一起时,服务器启动就没有问题。

没有意义的是,尽管我能够找到io.qua.grp.dep.GrpcServerProcessor的源代码,但仓库中没有io.quarkus.grpc.deployment.GrpcServerProcessor

1 个答案:

答案 0 :(得分:2)

您需要在Jandex索引中包括其他模块,以便可以找到服务。

只需在附加模块的META-INF/beans.xml中添加一个空的src/main/resources,就可以了。