我在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
答案 0 :(得分:2)
您需要在Jandex索引中包括其他模块,以便可以找到服务。
只需在附加模块的META-INF/beans.xml
中添加一个空的src/main/resources
,就可以了。