Java 无法在Quarkus上启动gRPC服务器-找不到公开`BindableService'的bean`
我在quarkus 1.5.1.Final中使用整合的Java 无法在Quarkus上启动gRPC服务器-找不到公开`BindableService'的bean`,java,quarkus,grpc-java,Java,Quarkus,Grpc Java,我在quarkus 1.5.1.Final中使用整合的*.proto提供了一个运行的gRPC服务,并使用一个运行的工具服务构建了类 然后,我将服务组件分解到它自己的项目中,将依赖关系放在生成的类组件上(模块上方),但当我尝试使用/mvnw quarkus:dev启动服务应用程序时,我无法启动gRPC服务器: WARN [io.qua.grp.dep.GrpcServerProcessor] (build-7) Unable to find beans exposing the `Bindabl
*.proto
提供了一个运行的gRPC服务,并使用一个运行的工具服务构建了类
然后,我将服务组件分解到它自己的项目中,将依赖关系放在生成的类组件上(模块上方),但当我尝试使用/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());
}
}
package org.ikeda.address.grpc;
输入io.smallrye.mutiny.Uni;
导入org.ikeda.address.grpc.service.AddressManager;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
导入javax.inject.inject;
导入javax.inject.Singleton;
@独生子女
公共类AddressGrpcService扩展了MultinyAddressServiceGrpc.AddressServiceImplBase{
私有记录器log=LoggerFactory.getLogger(AddressGrpcService.class);
@注入
私人地址管理器地址管理器;
@凌驾
公用统一地址(PageRequest请求){
debug(“页面大小:{},页码:{}”,request.getPageSize(),request.getPageNumber());
返回此地址管理器
.getPaginatedAddresses(request.getPageNumber(),request.getPageSize())
.map(地址->地址响应.newBuilder().addAllAddresss(地址).build());
}
}
当我将生成的类与实现共同定位时,服务器启动没有问题
没有意义的是,repo中不存在
io.qua.grp.dep.GrpcServerProcessor
,尽管我能够找到io.quarkus.grpc.deployment.GrpcServerProcessor
的源代码,您需要在Jandex索引中包含额外的模块,以便可以找到服务
只需在附加模块的
src/main/resources
中添加一个空的META-INF/beans.xml
,就可以了。好的,刚刚意识到io.qua.grp.dep.GrpcServerProcessor
只是对包的一个简化。在添加Jandex插件后仍然无法加载bean。这样做很有效。我还必须将com.google.protobuf:protobufjava
依赖项添加到我正在运行的服务中。由于某些原因,无法获取可传递依赖项。遇到了相同的问题。这真的应该包含在Quarkus说明的某个地方,因为我认为我快疯了。请注意,您提到的依赖关系似乎不再需要了。