gRPC pour Java : bibliothèques, configuration et exemples d'utilisation
\n\ngRPC est un framework moderne et haute performance pour l'appel de procédures à distance (RPC), développé par Google. Il utilise Protocol Buffers (protobuf) comme langage de définition d'interface et de sérialisation des données, ainsi que HTTP/2 pour le transport. Dans l'écosystème Java, gRPC permet de créer des microservices rapides, typés et évolutifs. Sur cette page, nous examinerons les bibliothèques principales, le processus de configuration du projet et fournirons des exemples fonctionnels de serveur et de client.
\n\nBibliothèques principales pour gRPC en Java
\n\nPour travailler avec gRPC en Java, trois dépendances clés sont utilisées :
\n- \n
- io.grpc:grpc-netty-shaded — couche de transport basée sur Netty. Assure la prise en charge de HTTP/2 et la sécurité (TLS). Recommandée pour la plupart des projets. \n
- io.grpc:grpc-protobuf — intégration avec Protocol Buffers. Permet de générer des classes Java à partir de fichiers
.proto. \n - io.grpc:grpc-stub — bibliothèque pour créer des stubs client et serveur. Simplifie l'appel de méthodes distantes. \n
En complément, protobuf-java (pour travailler avec les messages) et le plugin protobuf-gradle-plugin (ou son équivalent pour Maven) peuvent être nécessaires pour la génération de code lors de la phase de construction.
\n\nConfiguration du projet (Maven)
\n\nAjoutez les dépendances suivantes dans pom.xml :
<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\nAjoutez également le plugin pour la génération de code à partir des fichiers .proto :
<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\nCréation du fichier .proto
\n\nDéfinissez le service et les messages dans le fichier src/main/proto/hello.proto :
syntax = "proto3";\n\npackage hello;\n\nservice Greet