כדי להתחיל בהטמעת שרת ה-gRPC המלא, תוכלו להוריד את שרת ה-gRPC של השלד.
מתחילים
יוצרים פרויקט gradle של java (grpc-booking-service), מתחת ל-src/main, ויוצרים ספריית 'proto'.
מורידים את ההגדרה של שירות ההזמנה ואת הפרוטוקול לבדיקת תקינות, ומציבים אותם בקטע src/main/proto. בקבצים האלה מוגדרים השיטות וההודעות של gRPC ל-Actions Center API ולבדיקת התקינות.
מעדכנים את הקובץ 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
מריצים את הפקודה הבאה כדי לבנות את הספרייה וליצור קוד באופן אוטומטי מהפלאגין של Protoc build:
./gradlew build
כדי להפעיל TLS בשרת, בקטע src/main/certificates/ נדרשים הקבצים הבאים:
- server_cert_chain.pem שרשרת האישורים של השרת בפורמט 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. בשני הקבצים, פועלים לפי ההוראות בקטע משימות לביצוע כדי להשלים את ההטמעה.
מעדכנים את הקובץ 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