gRPC para Java: bibliotecas, configuração e exemplos de uso

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

gRPC para Java: bibliotecas e exemplos de uso



Na arquitetura moderna de microsserviços, a comunicação eficiente entre serviços desempenha um papel importante. Uma das soluções mais performáticas é o gRPC — um framework de chamada de procedimento remoto (RPC) do Google, baseado em HTTP/2 e Protocol Buffers. Neste artigo, vamos abordar quais bibliotecas são necessárias para trabalhar com gRPC em Java, como configurar o projeto e escrever um servidor e cliente simples.



Principais bibliotecas para gRPC em Java



Para o desenvolvimento de aplicações gRPC em Java, utiliza-se o ecossistema grpc-java. Ele inclui três componentes principais:



  • grpc-core — o núcleo do framework, que implementa a camada de transporte e o gerenciamento de canais.
  • grpc-stub — geração de stubs (proxies) de cliente e servidor com base em arquivos proto.
  • grpc-protobuf — integração com Protocol Buffers (protobuf) para serialização de dados.


Adicionalmente, pode ser necessário o protoc — um compilador para gerar classes Java a partir de arquivos .proto. Em projetos modernos, é conveniente usar plugins para Maven ou Gradle, que automatizam esse processo.



Configuração do projeto com Maven



Adicione as dependências no 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>


Também conecte o plugin para geração de código a partir de arquivos 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>


Definição do serviço via Protocol Buffers



Crie o arquivo hello.proto no diretório src/main/proto:



syntax = "proto3";

package example;

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

message HelloRequest { string name = 1;}

message HelloReply { string message = 1;}


Após executar mvn compile, serão geradas as classes HelloRequest, HelloReply e GreeterGrpc.



Implementação do servidor gRPC em Java



Crie uma classe de servidor que implementa a interface gerada:



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