জাভার জন্য gRPC সার্ভার কঙ্কাল

আপনার সম্পূর্ণ gRPC সার্ভার বাস্তবায়ন শুরু করতে সাহায্য করার জন্য আপনি আমাদের কঙ্কাল gRPC সার্ভার ডাউনলোড করতে পারেন।

এবার শুরু করা যাক

  1. একটি জাভা গ্রেডল প্রজেক্ট তৈরি করুন (grpc-booking-service), src/main এর অধীনে, একটি 'প্রোটো' ডিরেক্টরি তৈরি করুন।

  2. বুকিং পরিষেবার সংজ্ঞা এবং স্বাস্থ্য পরীক্ষা প্রোটোকল ডাউনলোড করুন, সেগুলিকে src/main/proto-এর অধীনে রাখুন৷ এই ফাইলগুলি অ্যাকশন সেন্টার API এবং স্বাস্থ্য পরীক্ষার জন্য gRPC পদ্ধতি এবং বার্তাগুলিকে সংজ্ঞায়িত করে৷

  3. build.gradle ফাইল আপডেট করুন, নির্ভরতা যোগ করুন এবং Gradle এর জন্য প্রোটোবাফ প্লাগইন। protobuf-gradle-plugin এর ভূমিকা এবং গাইড এখানে পাওয়া যাবে।

        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 ইন্টারনেট কর্তৃপক্ষ 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- এর অধীনে রাখুন। উভয় ফাইলেই, আপনার বাস্তবায়ন সম্পূর্ণ করতে TODOs অনুসরণ করুন।

  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

অন্যান্য রেফারেন্স