0

为了提供 gRPC 服务,我需要实现一个 Netty 服务器,并将我的 (gRPC) 服务添加到它。在Java中我做了:

Server server = NettyServerBuilder.forPort(port).addService(RetrieveServiceGrpc.bindService(new RetrieveServiceImpl()))
            .build().start();

如果我有很多服务,我可能会有类似的东西:

.addService(....) //1st service
.addService(....) // 2nd service
.addService(....)

有没有更好的方法来实现这一目标?(例如:通过一些配置将所有服务添加到某个文件夹下)

4

2 回答 2

1

您现在可以使用grpc-spring-boot-starter@GRpcService在您的服务类 (RetrieveServiceImpl) 上使用注释:

@GRpcService
public static class GreeterService extends GreeterGrpc.GreeterImplBase {
    @Override
    public void sayHello(GreeterOuterClass.HelloRequest request, StreamObserver<GreeterOuterClass.HelloReply> responseObserver) {
        final GreeterOuterClass.HelloReply.Builder replyBuilder = GreeterOuterClass.HelloReply.newBuilder().setMessage("Hello " + request.getName());
        responseObserver.onNext(replyBuilder.build());
        responseObserver.onCompleted();
    }
}

这负责调用addService方法等(细节)。

GitHub 上的文档:https ://github.com/LogNet/grpc-spring-boot-starter/tree/master#show-case

于 2020-09-29T18:52:27.200 回答
0

是的,多次调用addService()将是设置服务器的建议方式。实现哪些服务通常很重要,而添加新服务的情况很少见,因此明确列出它们并不是一个坏主意。

gRPC 可以改进对依赖注入框架的支持以注入服务,例如添加一个addServices(Set). 然而,gRPC 需要采取公正的方法,因为有多个相互竞争的 DI 框架,并且开发人员可以强烈地感受到他们的偏好。如果您对改善 DI 体验有任何建​​议,请随时提出问题

于 2015-09-30T16:32:49.477 回答