尊敬的 gRPC/Spring 用户,为了增强 grpc-ecosystem/grpc-spring 的用户体验,我们开展了本次调查,作为建立直接沟通渠道的手段。非常感谢您的反馈。
自述文件:英语 | 中文
文档:英语 | 中文
使用@GrpcService
实现自动配置和运行 gRPC 服务器
使用@GrpcClient
自动创建和管理您的 grpc 通道和存根
支持其他 grpc-java 风格(例如 Reactive gRPC (RxJava)、grpc-kotlin...)
io.grpc.BindableService
)StubFactory
s支持 Spring-Security
支持Spring云
DiscoveryClient
中读取服务的目标地址(所有类型)支持 Spring Sleuth 作为分布式跟踪解决方案
(如果存在brave-instrumentation-grpc)
支持全局和自定义 gRPC 服务器/客户端拦截器
自动公制支持(基于千分尺/执行器)
也适用于(非阴影)grpc-netty
最新版本是3.1.0.RELEASE
它是用 spring-boot 3.2.4
和 spring-cloud 2023.0.0
编译的,但它也与多种其他版本兼容。所有版本及其各自库版本的概述可以在我们的文档中找到。
注意:该项目也可以在没有 Spring-Boot 的情况下使用,但这需要一些手动 bean 配置。
要使用 Maven 添加依赖项,请使用以下命令:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
使用 Gradle 添加依赖项:
dependencies {
implementation ' net.devh:grpc-spring-boot-starter:3.1.0.RELEASE '
}
要使用 Maven 添加依赖项,请使用以下命令:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-server-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
使用 Gradle 添加依赖项:
dependencies {
implementation ' net.devh:grpc-server-spring-boot-starter:3.1.0.RELEASE '
}
使用@GrpcService
注释您的服务器接口实现
@ GrpcService
public class GrpcServerService extends GreeterGrpc . GreeterImplBase {
@ Override
public void sayHello ( HelloRequest req , StreamObserver < HelloReply > responseObserver ) {
HelloReply reply = HelloReply . newBuilder (). setMessage ( "Hello ==> " + req . getName ()). build ();
responseObserver . onNext ( reply );
responseObserver . onCompleted ();
}
}
默认情况下,grpc 服务器将监听端口9090
。这些和其他设置可以通过 Spring 的属性机制进行更改。服务器使用grpc.server.
前缀。
请参阅我们的文档了解更多详细信息。
要使用 Maven 添加依赖项,请使用以下命令:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-client-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
使用 Gradle 添加依赖项:
dependencies {
compile ' net.devh:grpc-client-spring-boot-starter:3.1.0.RELEASE '
}
使用@GrpcClient(serverName)
注释 grpc 客户端存根的字段
不要与@Autowired
或@Inject
结合使用
@ GrpcClient ( "gRPC server name" )
private GreeterGrpc . GreeterBlockingStub greeterStub ;
注意:您可以对多个通道使用相同的 grpc 服务器名称,也可以使用不同的存根(即使使用不同的拦截器)。
然后你可以像这样向你的服务器发送查询:
HelloReply response = stub . sayHello ( HelloRequest . newBuilder (). setName ( name ). build ());
可以为每个客户端单独配置目标地址。但在某些情况下,您可以仅依赖默认配置。您可以通过NameResolver.Factory
beans 自定义默认 url 映射。如果您不配置该 bean,则将使用默认方案和名称(例如: dns:/<name>
)猜测默认 uri:
这些和其他设置可以通过 Spring 的属性机制进行更改。客户端使用grpc.client.(serverName).
前缀。
请参阅我们的文档了解更多详细信息。
该库支持grpc-netty
和grpc-netty-shaded
。后一种可能会防止与不兼容的 grpc 版本发生冲突或需要不同版本的 netty 的库之间发生冲突。
注意:如果类路径中存在着色的 netty,则该库将始终优先于非着色的 grpc-netty。
您可以将它与 Maven 一起使用,如下所示:
< dependency >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty</ artifactId >
< version >${grpcVersion}</ version >
</ dependency >
<!-- For both -->
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-spring-boot-starter</ artifactId >
< version >...</ version >
< exclusions >
< exclusion >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty-shaded</ artifactId >
</ exclusion >
</ exclusions >
</ dependency >
<!-- For the server (only) -->
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-server-spring-boot-starter</ artifactId >
< version >...</ version >
< exclusions >
< exclusion >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty-shaded</ artifactId >
</ exclusion >
</ exclusions >
</ dependency >
<!-- For the client (only) -->
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-client-spring-boot-starter</ artifactId >
< version >...</ version >
< exclusions >
< exclusion >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty-shaded</ artifactId >
</ exclusion >
</ exclusions >
</ dependency >
使用 Gradle 时就像这样:
implementation " io.grpc:grpc-netty: ${ grpcVersion } "
implementation ' net.devh:grpc-spring-boot-starter:... ' exclude group : ' io.grpc ' , module : ' grpc-netty-shaded ' // For both
implementation ' net.devh:grpc-client-spring-boot-starter:... ' exclude group : ' io.grpc ' , module : ' grpc-netty-shaded ' // For the client (only)
implementation ' net.devh:grpc-server-spring-boot-starter:... ' exclude group : ' io.grpc ' , module : ' grpc-netty-shaded ' // For the server (only)
请在此处阅读有关我们示例项目的更多信息。
请参阅我们的文档寻求帮助。
始终欢迎您的贡献!请参阅 CONTRIBUTING.md 了解详细指南。