Kotlin IDEA下用Gradle GRPC 简单教程

作者: 想入飞飞___ | 来源:发表于2017-12-23 15:27 被阅读160次

    0.Gradle配置GRPC

    我用的是idea,首先我用Gradle来构建项目,项目grpc如下

    group 'dd'
    version '1.0-SNAPSHOT'
    
    buildscript {
        ext.kotlin_version = '1.1.4'
    
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.1'
        }
    }
    
    apply plugin: 'kotlin'
    apply plugin: 'com.google.protobuf'
    
    
    protobuf {
        protoc {
            artifact = "com.google.protobuf:protoc:3.2.0"
        }
        plugins {
            grpc {
                artifact = 'io.grpc:protoc-gen-grpc-java:1.4.0'
            }
        }
    
        generatedFilesBaseDir = "src"
    
        generateProtoTasks {
            all()*.plugins {
                grpc {
                    outputSubDir = "java"
                }
            }
        }
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    
        compile 'io.grpc:grpc-netty:1.8.0'
        compile 'io.grpc:grpc-protobuf:1.8.0'
        compile 'io.grpc:grpc-stub:1.8.0'
    }
    
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    

    1.proto文件

    在src\main目录下,建立proto文件夹,用来放proto的,以下为测试proto

    syntax="proto3";
    package com.wyf;
    
    service TestService{
        rpc test(Req) returns(Resp){}
    }
    enum Tt{
        T1 =0;
        T2 = 1;
    }
    
    message Req{
        string req=1;
    }
    message Resp{
        string resp =1;
    }
    
    在IDEA控制台下输入“Gradlew build”来生成源码
    
    

    2.Server端

    Server端文件

    import com.google.protobuf.Service
    import com.wyf.La
    javascript:void(null)
    import com.wyf.TestServiceGrpc
    import io.grpc.ServerBuilder
    import io.grpc.stub.StreamObserver
    
    fun main(args :Array<String>){
    
         var server = ServerBuilder
                 .forPort(8899)
                 .addService(TestService())
                 .build()
                 .start()
        server.awaitTermination()
        println("ss")
    }
    
     class  TestService : TestServiceGrpc.TestServiceImplBase() {
        override fun test(request: La.Req?, responseObserver: StreamObserver<La.Resp>?) {
            println(request?.req)
        }
    }
    

    3.Client端

    Client端文件

    import com.wyf.La
    import com.wyf.TestServiceGrpc
    import io.grpc.ManagedChannelBuilder
    
    fun main(args:Array<String>){
    
        var   channel = ManagedChannelBuilder.forAddress("127.0.0.1",8899)
                .usePlaintext(true)
                .build()
    
        var testStub = TestServiceGrpc.newBlockingStub(channel)
        var r = La.Req.newBuilder().setReq("112233445566").build()
        testStub.test(r)
    
    }
    
    

    4编译

    进入项目根目录,命令行输出下面的

    gradlew build
    

    5运行

    先运行Server再运行client,成功接收到client传来的消息,如图


    成功.png

    相关文章

      网友评论

        本文标题:Kotlin IDEA下用Gradle GRPC 简单教程

        本文链接:https://www.haomeiwen.com/subject/xvbiixtx.html