Maven grpc を springboot デモと統合する方法

王林
リリース: 2023-05-13 13:01:26
転載
786 人が閲覧しました

    1. 説明

    GRPC は protobuf に基づいてインターフェイスを定義します。サーバーサイドとクライアントサイドに分かれます。サーバー側はインターフェースの実装を提供し、クライアントはサーバー側のインターフェースを呼び出すことで期待されるデータを取得します。

    2. 公開部分

    2.1 依存関係の追加

            <dependency>
                <groupId>net.devh</groupId>
                <artifactId>grpc-spring-boot-starter</artifactId>
                <version>2.12.0.RELEASE</version>
            </dependency>
            <dependency>
                <!-- Java 9+ compatibility -->
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
            </dependency>
    ログイン後にコピー

    プラグインの追加 (注: Wagon-provider-api を自動的に導入できない場合は、ここで導入できます)依存関係を容易にするための依存関係をダウンロードして、依存関係座標を削除します)

    <plugin>
                    <!--                    protobuf生成插件-->
                    <groupId>org.xolstice.maven.plugins</groupId>
                    <artifactId>protobuf-maven-plugin</artifactId>
                    <version>0.6.1</version>
                    <configuration>
                        <protocArtifact>com.google.protobuf:protoc:3.17.3:exe:${os.detected.classifier}
                        </protocArtifact>
                        <pluginId>grpc-java</pluginId>
                        <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.39.0:exe:${os.detected.classifier}
                        </pluginArtifact>
                        <!--默认值-->
                        <protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot>
                        <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
                        <clearOutputDirectory>false</clearOutputDirectory>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>compile</goal>
                                <goal>compile-custom</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    ログイン後にコピー

    2.2 プロト依存関係ファイルを追加します

    ディレクトリを追加しますsrc/main/proto、ディレクトリを設定しますSource Root にファイル hello.proto を追加し、ディレクトリ src/main/proto に次の内容を含む

    syntax = "proto3"; //指定proto版本
    package com.server;
    // 生成的Java代码的包名
    option java_package = "com.grpc.server";
    // 请求参数
    message HelloReq{
        string name = 1;
    }
    // 返回参数
    message HelloResp{
        string ret = 1;
    }
    // rpc service
    service HelloService{
    	// service中需要进行调用的具体方法
        rpc hello(HelloReq) returns (HelloResp){}
    }
    ログイン後にコピー

    を追加します。 2.3 protobuf

    による Java コードの生成 プラグインが正常にインポートされたら、下の図で選択されている protobuf:compile および protbuf:compile-custom をクリックします。対応する Java コード (つまり、インターフェイスの依存関係コード) を順番に生成します

    Maven grpc を springboot デモと統合する方法

    3. サーバー側インターフェイス

    サービスの特定の実装コードは次のとおりです

    import io.grpc.stub.StreamObserver;
    import net.devh.boot.grpc.server.service.GrpcService;
    @GrpcService
    public class HelloService extends HelloServiceGrpc.HelloServiceImplBase {
        @Override
        public void hello(Hello.HelloReq request, StreamObserver<Hello.HelloResp> responseObserver) {
            Hello.HelloResp resp = Hello.HelloResp.newBuilder().setRet("你好-->"+request.getName()).build();
            responseObserver.onNext(resp);
            responseObserver.onCompleted();
        }
    }
    ログイン後にコピー

    4 クライアント側インターフェイスの具体的な実装

    client ターミナル テストの呼び出しコードは次のとおりです

    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    @SpringBootTest
    public class GrpcTest {
        @Autowired
        private HelloSerivce helloSerivce;
        @Test
        public void test1() throws  Exception{
            helloSerivce.haha("牛哈哈");
        }
    }
    ログイン後にコピー

    以上がMaven grpc を springboot デモと統合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート