اسکلت سرور gRPC برای جاوا

می‌توانید سرور gRPC اسکلت ما را دانلود کنید تا به اجرای کامل سرور gRPC خود کمک کنید.

شروع کنید

  1. یک پروژه gradle جاوا (grpc-booking-service) ایجاد کنید، در زیر src/main، یک دایرکتوری 'proto' ایجاد کنید.

  2. تعریف خدمات رزرو و پروتکل بررسی سلامت را دانلود کنید، آنها را در زیر src/main/proto قرار دهید. این فایل‌ها روش‌ها و پیام‌های gRPC را برای API Center و Health Check تعریف می‌کنند.

  3. فایل build.gradle را به روز کنید، وابستگی ها و افزونه protobuf را برای Gradle اضافه کنید. مقدمه و راهنمای افزونه protobuf-gradle را می‌توانید در اینجا بیابید.

        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. دستور زیر را برای ساخت کتابخانه و تولید خودکار کد از افزونه پروتک بیلد اجرا کنید:

      ./gradlew build
    
  5. برای فعال کردن TLS در سرور، در زیر src/main/certificates/ فایل های زیر مورد نیاز است:

    • server_cert_chain.pem زنجیره گواهی سرور شما در قالب PEM
    • server_private_key.pem کلید خصوصی شما برای زنجیره گواهی سرور، باید کلید خصوصی PKCS#8 باشد.
    • trusted_client_roots.pem گواهی‌های ریشه‌ای که هنگام احراز هویت مشتریان قابل اعتماد هستند، می‌توانید انتخاب کنید که این مجموعه ریشه‌های مورد اعتماد را از مرجعی مانند Mozilla دریافت کنید، یا مجموعه ریشه‌هایی را که در حال حاضر توسط Google Internet Authority G2 توصیه می‌شود نصب کنید. در مورد دوم، ممکن است مجبور شوید گاهی اوقات گواهی ریشه را به صورت دستی به روز کنید
  6. کد نمونه را از این مخزن بازیابی کنید:

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

    BookingService.java را در src/main/java/ext/maps/booking/partner/v2 ، Health.java را در src/main/java/grpc/health/v1 قرار دهید. در هر دو فایل، TODO ها را دنبال کنید تا پیاده سازی های خود را کامل کنید.

  7. فایل gradle.build را به روز کنید تا با افزودن کد زیر، تولید سرور قابل اجرایی را مشخص کنید:

    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. کامپایل سرور:

    ./gradlew installDist
    
  9. سرور رزرو را اجرا کنید:

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

ساختار فهرست نهایی

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

مرجع دیگر