gRPC für Java: Bibliotheken, Einrichtung und Anwendungsbeispiele
\n\ngRPC ist ein modernes, hochleistungsfähiges Framework für entfernte Prozeduraufrufe (RPC), das von Google entwickelt wurde. Es verwendet Protocol Buffers (protobuf) als Sprache zur Definition von Schnittstellen und zur Datenserialisierung sowie HTTP/2 für den Transport. Im Java-Ökosystem ermöglicht gRPC die Erstellung schneller, typsicherer und skalierbarer Microservices. Auf dieser Seite behandeln wir die wichtigsten Bibliotheken, den Einrichtungsprozess des Projekts und zeigen funktionierende Beispiele für Server und Client.
\n\nWichtige Bibliotheken für gRPC in Java
\n\nFür die Arbeit mit gRPC in Java werden drei wesentliche Abhängigkeiten benötigt:
\n- \n
- io.grpc:grpc-netty-shaded — Transportschicht basierend auf Netty. Bietet Unterstützung für HTTP/2 und Sicherheit (TLS). Wird für die meisten Projekte empfohlen. \n
- io.grpc:grpc-protobuf — Integration mit Protocol Buffers. Ermöglicht die Generierung von Java-Klassen aus
.proto-Dateien. \n - io.grpc:grpc-stub — Bibliothek zur Erstellung von Client- und Server-Stubs. Vereinfacht den Aufruf entfernter Methoden. \n
Zusätzlich können protobuf-java (für die Arbeit mit Nachrichten) und das Plugin protobuf-gradle-plugin (oder ein Äquivalent für Maven) zur Codegenerierung während des Builds erforderlich sein.
\n\nProjekteinrichtung (Maven)
\n\nFügen Sie die folgenden Abhängigkeiten in Ihre pom.xml ein:
<dependencies>\n <dependency>\n <groupId>io.grpc</groupId>\n <artifactId>grpc-netty-shaded</artifactId>\n <version>1.62.0</version>\n </dependency>\n <dependency>\n <groupId>io.grpc</groupId>\n <artifactId>grpc-protobuf</artifactId>\n <version>1.62.0</version>\n </dependency>\n <dependency>\n <groupId>io.grpc</groupId>\n <artifactId>grpc-stub</artifactId>\n <version>1.62.0</version>\n </dependency>\n <dependency>\n <groupId>javax.annotation</groupId>\n <artifactId>javax.annotation-api</artifactId>\n <version>1.3.2</version>\n </dependency>\n</dependencies>\n\nFügen Sie außerdem das Plugin zur Codegenerierung aus .proto-Dateien hinzu:
<build>\n <extensions>\n <extension>\n <groupId>kr.motd.maven</groupId>\n <artifactId>os-maven-plugin</artifactId>\n <version>1.7.1</version>\n </extension>\n </extensions>\n <plugins>\n <plugin>\n <groupId>org.xolstice.maven.plugins</groupId>\n <artifactId>protobuf-maven-plugin</artifactId>\n <version>0.6.1</version>\n <configuration>\n <protocArtifact>com.google.protobuf:protoc:3.24.0:exe:${os.detected.classifier}</protocArtifact>\n <pluginId>grpc-java</pluginId>\n <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.62.0:exe:${os.detected.classifier}</pluginArtifact>\n </configuration>\n <executions>\n <execution>\n <goals>\n <goal>compile</goal>\n <goal>compile-custom</goal>\n </goals>\n </execution>\n </executions>\n </plugin>\n </plugins>\n</build>\n\nErstellung einer .proto-Datei
\n\nDefinieren Sie den Dienst und die Nachrichten in der Datei src/main/proto/hello.proto:
syntax = "proto3";\n\npackage hello;\n\nservice Greet Auch in der Bibliothek
HTML-Parsing in Swift: Die Bibliothek SwiftSoup für iOS/macOS
Aufgabenplaner in Go (Golang): Leitfaden zur Implementierung von Cron-Jobs