入门指南

<- 返回索引

本节讨论如何让 Spring 连接到 gRPC 服务端并管理您的连接。

目录

附加主题

项目创建

在我们开始添加依赖关系之前,让我们项目的一些设置建议开始。

project setup

我们建议将您的项目分为2至3个不同的模块。

  1. interface 项目 包含原始 protobuf 文件并生成 java model 和 service 类。 你可能会在不同的项目中会共享这个部分。
  2. Server 项目 包含项目的业务实现,并使用上面的 Interface 项目作为依赖项。
  3. Client 项目(可选,可能很多) 任何使用预生成的 stub 来访问服务器的客户端项目。

依赖项

接口项目

请参阅 服务端入门指引 页面

服务端项目

请参阅 服务端入门指引 页面

客户端项目

Maven (客户端)

    <dependencies>
        <dependency>
            <groupId>net.devh</groupId>
            <artifactId>grpc-client-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>example</groupId>
            <artifactId>my-grpc-interface</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

Gradle (客户端)

apply plugin: 'org.springframework.boot'

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
    compile('net.devh:grpc-client-spring-boot-starter')
    compile('my-example:my-grpc-interface')
}

buildscript {
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

使用 Stubs 连接服务端

本节假定您已经定义并生成了Protobuf

解释客户端组件

访问客户端

我们建议注入 (@GrpcClient) Stub,而不是纯粹的 Channel.

注意: 存在不同类型的 Stub。 并非所有的都支持所有请求类型 (流式调用)。

import example.HelloReply;
import example.HelloRequest;
import example.MyServiceGrpc;

import io.grpc.stub.StreamObserver;

import net.devh.boot.grpc.server.service.GrpcService;

@Service
public class FoobarService {

    @GrpcClient("myService")
    private MyServiceBlockingStub myServiceStub;

    public String receiveGreeting(String name) {
        HelloRequest request = HelloRequest.newBuilder()
                .setName(name)
                .build()
        return myServiceStub.sayHello(request).getMessage();
    }

}

附加主题


<- 返回索引