Java için gRPC Sunucu İskeleti

Tam gRPC sunucunuzu uygulamaya başlamanıza yardımcı olması için iskelet gRPC sunucumuzu indirebilirsiniz.

Başlayın

  1. Bir java gradle projesi (grpc-booking-service) oluşturun, src/main altında "proto" dizini oluşturun.

  2. Rezervasyon hizmeti tanımını ve sağlık kontrolü protokolünü indirip src/main/proto altına yerleştirin. Bu dosyalar, Actions Center API ve durum denetimi için gRPC yöntemlerini ve mesajlarını tanımlar.

  3. build.gradle dosyasını güncelleyin, Gradle için bağımlılıkları ve protobuf eklentisini ekleyin. protobuf-gradle-plugin ile ilgili giriş ve kılavuzu 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 protoc derleme eklentisi üzerinden kod otomatik olarak oluşturmak için aşağıdaki komutu çalıştırın:

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

    • server_cert_chain.pem PEM biçimindeki sunucu sertifika zinciriniz
    • server_private_key.pem sunucu sertifika zinciri için özel anahtarınızdır. PKCS#8 özel anahtarı olmalıdır.
    • trusted_client_roots.pem istemcilerin kimliğini doğrularken güvenilen kök sertifikaları, bu güvenilir kök sertifika grubunu Mozilla gibi bir yetkiliden almayı veya Google İnternet Yetkilisi G2 tarafından şu anda önerilen kök sertifika grubunu yüklemeyi seçebilirsiniz. İkinci durumda, bazen kök sertifikayı manuel olarak güncellemeniz gerekebilir.
  6. Örnek kodu bu depodan 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 altına, Health.java dosyasını src/main/java/grpc/health/v1 altına yerleştirin. Her iki dosyada da uygulamalarınızı tamamlamak için TODO'ları uygulayın.

  7. Aşağıdaki kodu ekleyerek gradle.build dosyasını sunucu yürütülebilir dosyasının oluşturulmasını belirtecek şekilde güncelleyin:

    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
    

Nihai 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 Referans