Java için gRPC Sunucu İskeleti

Skeleton gRPC sunucumuzu indirebilirsiniz. eksiksiz gRPC sunucunuzu uygulamaya başlamanıza yardımcı olun.

Başlayın

  1. src/main altında bir Java gradle projesi (grpc-booking-service) oluşturun. 'proto' oluşturmak dizin.

  2. Rezervasyon hizmetini indirin tanım ve sağlık denetimi protokolü, bunları src/main/proto altına yerleştirin. Bu dosyalar gRPC yöntemlerini ve Actions Center API ve Durum Denetimi için mesajları.

  3. build.gradle dosyasını güncelleyin, bağımlılıkları ve protobuf eklentisini ekleyin. bir soru işareti olacaktı. Protobuf-gradle eklentisine giriş ve kılavuzda, burada bulabilirsiniz.

        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. Kitaplığı derlemek ve otomatik olarak kod oluşturmak için aşağıdaki komutu çalıştırın protoc derleme eklentisi:

      ./gradlew build
    
  5. Sunucuda TLS'yi etkinleştirmek için src/main/certificates/ altında, şu dosyalar gereklidir:

    • PEM biçiminde sunucu sertifikası zinciriniz: server_cert_chain.pem
    • server_private_key.pem sunucu sertifikası için özel anahtarınız zincirinin, PKCS#8 özel anahtarı olması gerekir
    • trusted_client_roots.pem güvenilir kök sertifikaları müşterilerin kimliklerini doğrularken, yalnızca tek bir tıklamayla bir otoriteden gelen güvenilir kökleri Mozilla veya Google Cloud Platform'u şu anda Google İnternet Yetkilisi tarafından önerilen köklerin oranı G2'yi seçin. İkinci durumda da, zaman zaman kök sertifikayı manuel olarak güncellemeyi
  6. Şu kod deposundan örnek kodu alın:

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

    BookingService.java dosyasını src/main/java/ext/maps/booking/partner/v2 içinde, Health.java'yı altına yerleştirin. src/main/java/grpc/health/v1. Her iki dosyada da YAPILACAKLAR'ı takip ederek tamamlamanız gerekir.

  7. Yürütülebilir sunucu oluşturma işlemini belirtmek için gradle.build dosyasını güncelleyin aşağıdaki kodu ekleyerek:

    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. Sunucuyu derleyin:

    ./gradlew installDist
    
  9. Rezervasyon sunucusunu çalıştırın:

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

Son Dizin Yapısı

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

Diğer Referanslar