คุณสามารถดาวน์โหลดเซิร์ฟเวอร์ gRPC โครงร่างเพื่อช่วยในการเริ่มต้นใช้งานเซิร์ฟเวอร์ gRPC ที่สมบูรณ์
เริ่มต้นใช้งาน
สร้างโปรเจ็กต์ gradle ของ Java (grpc-booking-service) ในส่วน src/main ให้สร้างไดเรกทอรี "proto"
ดาวน์โหลดคําจํากัดความบริการการจอง และโปรโตคอลการตรวจสอบสถานะ แล้ววางไว้ที่ src/main/proto ไฟล์เหล่านี้จะกำหนดเมธอด gRPC และข้อความสำหรับ Actions Center API และการตรวจสอบประสิทธิภาพการทำงาน
อัปเดตไฟล์ build.gradle เพิ่ม Dependency และปลั๊กอิน protobuf สำหรับ 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
เรียกใช้คําสั่งต่อไปนี้เพื่อสร้างไลบรารีและสร้างโค้ดโดยอัตโนมัติจากปลั๊กอินการบิลด์ protoc
./gradlew build
หากต้องการเปิดใช้ TLS ในเซิร์ฟเวอร์ คุณต้องมีไฟล์ต่อไปนี้ในส่วน src/main/certificates/
- server_cert_chain.pem ชุดใบรับรองเซิร์ฟเวอร์ในรูปแบบ PEM
- server_private_key.pem คีย์ส่วนตัวสำหรับเชนใบรับรองเซิร์ฟเวอร์ต้องเป็นคีย์ส่วนตัว PKCS#8
- trusted_client_roots.pem ใบรับรองรูทที่เชื่อถือเมื่อตรวจสอบสิทธิ์ไคลเอ็นต์ คุณสามารถเลือกรับชุดรูทที่เชื่อถือนี้จากผู้ออกใบรับรอง เช่น Mozilla หรือติดตั้งชุดรูทที่ Google Internet Authority (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 ในทั้ง 2 ไฟล์ ให้ทําตาม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