אתם יכולים להוריד את השלד של שרת ה-gRPC כדי להתחיל להטמיע שרת gRPC מלא.
תחילת העבודה
יוצרים פרויקט gradle ב-Java (grpc-booking-service), יוצרים ספרייה בשם 'proto' בקטע src/main.
מורידים את הגדרת שירות ההזמנות ואת פרוטוקול בדיקת התקינות, וממקמים אותם בתיקייה src/main/proto. הקבצים האלה מגדירים את השיטות וההודעות של gRPC ל-Actions Center API ולבדיקת התקינות.
מעדכנים את הקובץ build.gradle, מוסיפים את יחסי התלות ואת הפלאגין 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 build plugin:
./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. בשני הקבצים, פועלים לפי TODOs כדי להשלים את ההטמעות.
כדי לציין את היצירה של קובץ ההפעלה של השרת, מעדכנים את הקובץ 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 }
מריצים את ה-compile של השרת:
./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
מקור אחר
לקבלת כלים אחרים ל-build, אפשר להיכנס לאתר של gRPC-java ולהוריד את הדוגמה, בדף grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java