gRPC pour Java : bibliothèques, configuration et exemples d'utilisation

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

gRPC pour Java : bibliothèques et exemples d'utilisation



Dans l'architecture moderne des microservices, l'interaction efficace entre les services joue un rôle important. L'une des solutions les plus performantes est gRPC — un framework d'appel de procédure distante (RPC) de Google, basé sur HTTP/2 et Protocol Buffers. Dans cet article, nous allons examiner les bibliothèques nécessaires pour travailler avec gRPC en Java, comment configurer le projet et écrire un serveur simple avec un client.



Bibliothèques principales pour gRPC en Java



Pour développer des applications gRPC en Java, on utilise l'écosystème grpc-java. Il comprend trois composants clés :



  • grpc-core — le noyau du framework, implémentant la couche de transport et la gestion des canaux.
  • grpc-stub — la génération de stubs clients et serveurs à partir des fichiers proto.
  • grpc-protobuf — l'intégration avec Protocol Buffers (protobuf) pour la sérialisation des données.


En complément, protoc peut être nécessaire — le compilateur pour générer des classes Java à partir des fichiers .proto. Dans les projets modernes, il est pratique d'utiliser des plugins pour Maven ou Gradle qui automatisent ce processus.



Configuration du projet avec Maven



Ajoutez les dépendances dans pom.xml :



<dependency>    <groupId>io.grpc</groupId>    <artifactId>grpc-netty-shaded</artifactId>    <version>1.62.2</version></dependency><dependency>    <groupId>io.grpc</groupId>    <artifactId>grpc-protobuf</artifactId>    <version>1.62.2</version></dependency><dependency>    <groupId>io.grpc</groupId>    <artifactId>grpc-stub</artifactId>    <version>1.62.2</version></dependency><dependency>    <groupId>javax.annotation</groupId>    <artifactId>javax.annotation-api</artifactId>    <version>1.3.2</version></dependency>


Ajoutez également le plugin pour la génération de code à partir des fichiers proto :



<plugin>    <groupId>org.xolstice.maven.plugins</groupId>    <artifactId>protobuf-maven-plugin</artifactId>    <version>0.6.1</version>    <configuration>        <protocArtifact>com.google.protobuf:protoc:3.25.3:exe:${os.detected.classifier}</protocArtifact>        <pluginId>grpc-java</pluginId>        <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.62.2:exe:${os.detected.classifier}</pluginArtifact>    </configuration>    <executions>        <execution>            <goals>                <goal>compile</goal>                <goal>compile-custom</goal>            </goals>        </execution>    </executions></plugin>


Définition du service via Protocol Buffers



Créez un fichier hello.proto dans le répertoire src/main/proto :



syntax = "proto3";

package example;

service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {}}

message HelloRequest { string name = 1;}

message HelloReply { string message = 1;}


Après avoir exécuté mvn compile, les classes HelloRequest, HelloReply et GreeterGrpc seront générées.



Implémentation du serveur gRPC en Java



Créez une classe serveur qui implémente l'interface générée :



import io.grpc.Server;import io.grpc.ServerBuilder;import io.grpc.stub.StreamObserver;

public class HelloServer { public static void main(String[] args) throws Exception { Server server = ServerBuilder.forPort(50051) .addService

Recommendations