gRPC Server Skeleton untuk Java

Anda dapat mendownload server gRPC kerangka kami untuk membantu memulai penerapan server gRPC lengkap.

Mulai

  1. Buat project gradle java (grpc-booking-service), di bagian src/main, buat direktori 'proto'.

  2. Download definisi layanan pemesanan dan protokol pemeriksaan kesehatan, tempatkan keduanya di bagian src/main/proto. File ini menentukan metode dan pesan gRPC untuk Actions Center API dan Health Check.

  3. Update file build.gradle, tambahkan dependensi, dan plugin protobuf untuk Gradle. Pengantar dan panduan untuk protobuf-gradle-plugin dapat ditemukan di sini.

        apply plugin: 'java'
        apply plugin: 'com.google.protobuf'
    
        repositories {
            mavenCentral()
        }
    
        // updating the version in our release process.
        def grpcVersion = '1.8.0' // CURRENT_GRPC_VERSION
        def nettyTcNativeVersion = '2.0.7.Final'
    
        dependencies {
            compile "com.google.api.grpc:proto-google-common-protos:0.1.9"
            compile "io.grpc:grpc-netty:${grpcVersion}"
            compile "io.grpc:grpc-protobuf:${grpcVersion}"
            compile "io.grpc:grpc-stub:${grpcVersion}"
            compile "io.netty:netty-tcnative-boringssl-static:${nettyTcNativeVersion}"
            compile "org.bouncycastle:bcmail-jdk15:1.46"
    
            testCompile "io.grpc:grpc-testing:${grpcVersion}"
            testCompile "junit:junit:4.12"
            testCompile "org.mockito:mockito-core:1.9.5"
        }
    
        buildscript {
            repositories {
                mavenCentral()
            }
            dependencies {
                // ASSUMES GRADLE 2.12 OR HIGHER. Use plugin version 0.7.5 with earlier
                // gradle versions
                classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.1'
            }
        }
    
        protobuf {
            protoc {
                artifact = 'com.google.protobuf:protoc:3.4.0'
            }
            plugins {
                grpc {
                    artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
                }
            }
            generateProtoTasks {
                all()*.plugins {
                    grpc {}
                }
            }
        }
    
        // Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code.
        sourceSets {
            main {
                java {
                    srcDirs 'build/generated/source/proto/main/grpc'
                    srcDirs 'build/generated/source/proto/main/java'
                }
            }
        }
    
        // Generate IntelliJ IDEA's .idea & .iml project files
        apply plugin: 'idea'
    
        // Provide convenience executables for trying out the examples.
        apply plugin: 'application'
    
        startScripts.enabled = false
    
  4. Jalankan perintah berikut untuk mem-build library dan membuat kode secara otomatis dari plugin build prototipe:

      ./gradlew build
    
  5. Untuk mengaktifkan TLS pada server, di bagian src/main/certificates/, file berikut diperlukan:

    • server_cert_chain.pem rantai sertifikat server Anda dalam format PEM
    • server_private_key.pem kunci pribadi Anda untuk rantai sertifikat server harus berupa kunci pribadi PKCS#8
    • trusted_client_roots.pem root certificate yang tepercaya saat mengautentikasi klien, Anda dapat memilih untuk mendapatkan kumpulan root tepercaya ini dari otoritas seperti Mozilla, atau menginstal kumpulan root yang saat ini direkomendasikan oleh Google Internet Authority G2. Dalam kasus yang terakhir, Anda mungkin harus memperbarui root certificate secara manual pada waktu
  6. Ambil kode contoh dari repo ini:

      git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
    

    tempatkan BookingService.java di bagian src/main/java/ext/maps/booking/partner/v2, tempatkan Health.java di bagian src/main/java/grpc/health/v1. Di kedua file, ikuti TODO untuk menyelesaikan implementasi Anda.

  7. Update file gradle.build untuk menentukan pembuatan server yang dapat dieksekusi dengan menambahkan kode berikut:

    task bookingService(type: CreateStartScripts) {
        mainClassName = 'ext.maps.booking.partner.v2.BookingService'
        applicationName = 'booking-service'
        outputDir = new File(project.buildDir, 'tmp')
        classpath = jar.outputs.files + project.configurations.runtime
    }
    
    applicationDistribution.into('bin') {
        from(bookingService)
        fileMode = 0755
    }
    
  8. Kompilasi server:

    ./gradlew installDist
    
  9. Jalankan server pemesanan:

    ./build/install/grpc-booking-service/bin/booking-service
    

Struktur Direktori Akhir

src
|---main
    |---certificates
        |---server_cert_chain.pem
        |---server_private_key.pem
        |---trusted_client_roots.pem
    |---java
        |---ext.maps.booking.partner.v2.BookingService.java
        |---grpc.health.v1.Health.java
    |---proto
        |---booking_service.proto
        |---health.proto
|---test

Referensi lainnya