Możesz pobrać nasz szkieletowy serwer gRPC, który ułatwi Ci rozpoczęcie wdrażania pełnego serwera gRPC.
Rozpocznij
Utwórz projekt Gradle Java (grpc-booking-service), a w katalogu src/main utwórz katalog „proto”.
Pobierz definicję usługi rezerwacji i protokół kontroli stanu, a następnie umieść je w sekcji src/main/proto. Pliki te definiują metody gRPC i komunikaty dla interfejsu Actions Center API oraz kontroli stanu.
Zaktualizuj plik build.gradle, dodaj zależności i wtyczkę protobuf dla Gradle. Wprowadzenie i przewodnik dotyczący protobuf-gradle-plugin znajdziesz tutaj.
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
Uruchom to polecenie, aby utworzyć bibliotekę i automatycznie wygenerować kod z wtyczki kompilacji Protoc:
./gradlew build
Aby włączyć protokół TLS na serwerze, w atrybucie src/main/certificates/ wymagane są te pliki:
- server_cert_chain.pem – łańcuch certyfikatów serwera w formacie PEM.
- server_private_key.pem – kluczem prywatnym łańcucha certyfikatów serwera musi być klucz prywatny PKCS#8.
- trusted_client_roots.pem – zaufane certyfikaty główne podczas uwierzytelniania klientów. Możesz uzyskać ten zestaw zaufanych certyfikatów głównych od urzędu takiego jak Mozilla lub zainstalować zestaw certyfikatów głównych obecnie zalecanych przez urząd Google Internet Authority G2. W drugim przypadku konieczne może być czasem ręczne zaktualizowanie certyfikatu głównego
Pobierz przykładowy kod z tego repozytorium:
git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
Umieść BookingService.java w sekcji src/main/java/ext/maps/booking/partner/v2, a Health.java umieść w sekcji src/main/java/grpc/health/v1. Aby dokończyć implementacje, w obu plikach postępuj zgodnie z Zadaniami do wykonania.
Zaktualizuj plik gradle.build, aby określić generowanie pliku wykonywalnego serwera, dodając ten kod:
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 }
Kompilacja serwera:
./gradlew installDist
Uruchom serwer rezerwacji:
./build/install/grpc-booking-service/bin/booking-service
Ostateczna struktura katalogów
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
Inne materiały
Aby uzyskać dostęp do innych narzędzi do tworzenia, otwórz plik gRPC-java i pobierz przykład, a następnie sprawdź plik grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java