अपना पूरा gRPC सर्वर लागू करने के लिए, हमारा कंकाल gRPC सर्वर डाउनलोड करें.
शुरू करें
एक जावा ग्रेडल प्रोजेक्ट (grpc-booking-service) बनाएं, src/main में जाकर, 'प्रोटो' डायरेक्ट्री बनाएं.
बुकिंग सेवा की परिभाषा और स्वास्थ्य की जांच प्रोटोकॉल डाउनलोड करें. उन्हें src/main/proto में रखें. ये फ़ाइलें, ऐक्शन सेंटर एपीआई और हेल्थ चेक के लिए gRPC तरीके और मैसेज तय करती हैं.
build.gradle फ़ाइल अपडेट करें, 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
लाइब्रेरी बनाने और प्रोटॉक बिल्ड प्लगिन से अपने-आप कोड जनरेट करने के लिए, नीचे दिया गया निर्देश चलाएं:
./gradlew build
सर्वर पर TLS चालू करने के लिए, src/main/certificates/ में, ये फ़ाइलें ज़रूरी हैं:
- आपकी सर्वर सर्टिफ़िकेट चेन, PEM फ़ॉर्मैट में server_cert_chain.pem
- server_private_key.pem सर्वर सर्टिफ़िकेट चेन के लिए आपकी निजी कुंजी, PKCS#8 निजी कुंजी होनी चाहिए
- trusted_client_roots.pem ऐसे रूट सर्टिफ़िकेट जिन्हें क्लाइंट की पुष्टि करते समय भरोसेमंद माना जाता है. आपके पास Mozilla जैसी संस्था से भरोसेमंद रूट का यह सेट पाने का विकल्प होता है या Google इंटरनेट अथॉरिटी G2 के सुझाए गए रूट के सेट को इंस्टॉल करने का भी विकल्प चुना जा सकता है. बाद वाले मामले में, आपको कभी-कभी रूट सर्टिफ़िकेट को मैन्युअल तरीके से अपडेट करना पड़ सकता है.
इस डेटा स्टोर करने की जगह से सैंपल कोड वापस पाएं:
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 में दिए गए निर्देशों का पालन करें.
नीचे दिए गए कोड को जोड़कर, एक्ज़ीक्यूटेबल सर्वर की जनरेशन तय करने के लिए 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 }
सर्वर को कंपाइल करें:
./gradlew installDist
बुकिंग सर्वर चलाएं:
./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
अन्य संदर्भ
अन्य बिल्डिंग टूल के लिए, gRPC-java पर जाएं और उदाहरण डाउनलोड करें. इसके बाद, grpc-java/examples देखें.
git clone -b v1.9.0 https://github.com/grpc/grpc-java