gRPC para Java: bibliotecas, configuración y ejemplos de uso

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

gRPC para Java: bibliotecas y ejemplos de uso



En la arquitectura moderna de microservicios, la interacción eficiente entre servicios juega un papel importante. Una de las soluciones más eficientes es gRPC, un framework de llamada a procedimiento remoto (RPC) de Google, basado en HTTP/2 y Protocol Buffers. En este artículo, analizaremos qué bibliotecas son necesarias para trabajar con gRPC en Java, cómo configurar el proyecto y escribir un servidor y cliente simples.



Bibliotecas principales para gRPC en Java



Para el desarrollo de aplicaciones gRPC en Java se utiliza el ecosistema grpc-java. Incluye tres componentes clave:



  • grpc-core — el núcleo del framework, que implementa la capa de transporte y la gestión de canales.
  • grpc-stub — generación de stubs de cliente y servidor basados en archivos proto.
  • grpc-protobuf — integración con Protocol Buffers (protobuf) para la serialización de datos.


Adicionalmente, puede ser necesario protoc, el compilador para generar clases Java a partir de archivos .proto. En proyectos modernos, es conveniente usar plugins para Maven o Gradle que automatizan este proceso.



Configuración del proyecto con Maven



Agregue las dependencias en 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>


También conecte el plugin para la generación de código a partir de archivos 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>


Definición del servicio mediante Protocol Buffers



Cree el archivo hello.proto en el directorio src/main/proto:



syntax = "proto3";

package example;

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

message HelloRequest { string name = 1;}

message HelloReply { string message = 1;}


Después de ejecutar mvn compile, se generarán las clases HelloRequest, HelloReply y GreeterGrpc.



Implementación del servidor gRPC en Java



Cree una clase de servidor que implemente la interfaz generada:



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