Anda dapat mendownload server gRPC kerangka kami untuk membantu memulai penerapan server gRPC lengkap.
Mulai
Buat project gradle java (grpc-booking-service), di bagian src/main, buat direktori 'proto'.
Download definisi layanan pemesanan dan protokol pemeriksaan kesehatan, tempatkan keduanya di bagian src/main/proto. File ini menentukan metode dan pesan gRPC untuk Actions Center API dan Health Check.
Update file build.gradle, tambahkan dependensi, dan plugin protobuf untuk Gradle. Pengantar dan panduan untuk protobuf-gradle-plugin dapat ditemukan di sini.
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
Jalankan perintah berikut untuk mem-build library dan membuat kode secara otomatis dari plugin build prototipe:
./gradlew build
Untuk mengaktifkan TLS pada server, di bagian src/main/certificates/, file berikut diperlukan:
- server_cert_chain.pem rantai sertifikat server Anda dalam format PEM
- server_private_key.pem kunci pribadi Anda untuk rantai sertifikat server harus berupa kunci pribadi PKCS#8
- trusted_client_roots.pem root certificate yang tepercaya saat mengautentikasi klien, Anda dapat memilih untuk mendapatkan kumpulan root tepercaya ini dari otoritas seperti Mozilla, atau menginstal kumpulan root yang saat ini direkomendasikan oleh Google Internet Authority G2. Dalam kasus yang terakhir, Anda mungkin harus memperbarui root certificate secara manual pada waktu
Ambil kode contoh dari repo ini:
git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
tempatkan BookingService.java di bagian src/main/java/ext/maps/booking/partner/v2, tempatkan Health.java di bagian src/main/java/grpc/health/v1. Di kedua file, ikuti TODO untuk menyelesaikan implementasi Anda.
Update file gradle.build untuk menentukan pembuatan server yang dapat dieksekusi dengan menambahkan kode berikut:
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 }
Kompilasi server:
./gradlew installDist
Jalankan server pemesanan:
./build/install/grpc-booking-service/bin/booking-service
Struktur Direktori Akhir
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
Referensi lainnya
Untuk alat pembuat lainnya, buka gRPC-java, lalu download contohnya, periksa grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java