同步操作将从 Gitee 极速下载/grpc-spring-boot-starter 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
QQ交流群:294712648
在 spring boot 应用中,通过 @GrpcService
自动配置并运行一个嵌入式的 gRPC 服务。
使用 @GrpcClient
自动创建和管理您的 gRPC Channels 和 stubs
支持Spring Cloud (向 Consul 或 Eureka 或 Nacos 注册服务并获取 gRPC 服务端信息)
支持Spring Sleuth作为分布式链路跟踪解决方案(如果brave-instrument-grpc存在)
支持全局和自定义的 gRPC 服务端/客户端拦截器
支持metric (基于micrometer/actuator )
也适用于 (non-shaded) grpc-netty
2.x.x.RELEASE 支持 Spring Boot 2.1.x/2.2.x 和 Spring Cloud Greenwich / Hoxton。
最新版本: 2.12.0.RELEASE
( 2.4.0.RELEASE
用于 Spring Boot 2.0.x & Spring Cloud Finchy).
1.x.x.RELEASE 支持 Spring Boot 1 & Spring Cloud Edgware, Dalston, Camden.
最新版本: 1.4.2.RELEASE
注意: 该项目也可以在没有 Spring-Boot 的情况下使用,但是您需要手动配置一些 bean。
使用一下命令添加 Maven 依赖项:
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-spring-boot-starter</artifactId>
<version>2.12.0.RELEASE</version>
</dependency>
Gradle:
dependencies {
compile 'net.devh:grpc-spring-boot-starter:2.12.0.RELEASE'
}
使用一下命令添加 Maven 依赖项:
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-starter</artifactId>
<version>2.12.0.RELEASE</version>
</dependency>
Gradle:
dependencies {
compile 'net.devh:grpc-server-spring-boot-starter:2.12.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>2.12.0.RELEASE</version>
</dependency>
Gradle:
dependencies {
compile 'net.devh:grpc-client-spring-boot-starter:2.12.0.RELEASE'
}
在 grpc 客户端的的 stub 字段上添加 @GrpcClient(serverName)
注解。
请不要将 @GrpcClient 与 @Autowireed
或 @Inject
一起使用。
@GrpcClient("gRPC server name")
private GreeterGrpc.GreeterBlockingStub greeterStub;
注意: 你可以将相同的 grpc 服务端名称用于多个 channel, 也可以使用不同的 stub (甚至使用不同的 stub 拦截器)
然后您可以向您的服务器发送查询,就像这样:
HelloReply response = stub.sayHello(HelloRequest.newBuilder().setName(name).build());
可以单独配置每个客户端的目标地址。 但在某些情况下,您可以仅依靠默认配置。 您可以通过 NameResolver.Factory
Bean 类自定义默认的 url 映射。 如果您没有配置那个Bean,那么默认的 uri 将使用默认方案和名称(如:dns:<name>
):
这些配置和其他的 设置 可以通过 Spring 的属性机制进行更改。 客户端使用grpc.client.(serverName)。
前缀。
详情请参阅我们的文档。
这个库支持grpc-netty
和grpc-nety-shaded
。 后一种可能会防止与不兼容的 gRPC 版本冲突或不同 netty 版本之间的冲突。
注意: 如果在classpath 中存在 shaded netty, 则 shaded netty 将使用有线与 non-shaded 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:
compile "io.grpc:grpc-netty:${grpcVersion}"
compile 'net.devh:grpc-spring-boot-starter:...' exclude group: 'io.grpc', module: 'grpc-netty-shaded' // For both
compile 'net.devh:grpc-client-spring-boot-starter:...' exclude group: 'io.grpc', module: 'grpc-netty-shaded' // For the client (only)
compile 'net.devh:grpc-server-spring-boot-starter:...' exclude group: 'io.grpc', module: 'grpc-netty-shaded' // For the server (only)
在 这里可以阅读更多关于我们的示例项目。
请参阅我们的文档寻求帮助。
我们始终欢迎您对项目作出任何贡献。 详见CONTRIBUTING.md。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。