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 di src/main/proto. File ini menentukan metode dan pesan gRPC untuk Actions Center API dan Health Check.
Perbarui file build.gradle, tambahkan dependensi dan plugin protobuf untuk Gradle. Pengantar dan panduan untuk plugin protobuf-gradle 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 protoc:
./gradlew build
Untuk mengaktifkan TLS di 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 dipercaya saat mengautentikasi klien, Anda dapat memilih untuk mendapatkan kumpulan root terpercaya 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 sertifikat root secara manual
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.
Perbarui file gradle.build untuk menentukan pembuatan file yang dapat dieksekusi server 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 build lainnya, buka gRPC-java dan download contoh, lihat grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java