Escolar Documentos
Profissional Documentos
Cultura Documentos
implementation 'javax.annotation:javax.annotation-api:1.3.2'
implementation 'io.grpc:grpc-netty-shaded:1.38.0'
implementation 'io.grpc:grpc-protobuf:1.38.0'
implementation 'io.grpc:grpc-stub:1.38.0'
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.12.0"
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.38.0'
}
}
generateProtoTasks {
all()*.plugins {
grpc {}
}
}
}
8. Por fim, adicione o bloco abaixo no fim do arquivo.
// Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code.
sourceSets {
main {
java {
srcDirs 'build/generated/source/proto/main/grpc'
srcDirs 'build/generated/source/proto/main/java'
}
}
}
9. Salve o arquivo e clique com o botão direito em build.gradle e vá em Gradle → Refresh Gradle
Project.
syntax = "proto3";
message SumRequest {
int32 first_number = 1;
int32 second_number = 2;
}
message SumResponse {
int32 sum_result = 1;
}
service CalculatorService {
rpc Sum(SumRequest) returns (SumResponse) {};
}
20. Clique novamente com o botão direito em build.gradle e vá em Gradle → Refresh Gradle Pro-
ject.
package br.edu.ifg.calculator;
import br.edu.ifg.proto.calculator.CalculatorServiceGrpc;
import br.edu.ifg.proto.calculator.SumRequest;
import br.edu.ifg.proto.calculator.SumResponse;
import io.grpc.stub.StreamObserver;
public class CalculatorServiceImpl extends
CalculatorServiceGrpc.CalculatorServiceImplBase {
@Override
public void sum(SumRequest request, StreamObserver<SumResponse>
responseObserver) {
responseObserver.onNext(sumResponse);
responseObserver.onCompleted();
}
}
package br.edu.ifg.calculator;
import java.io.IOException;
import io.grpc.Server;
import io.grpc.ServerBuilder;
server.start();
server.awaitTermination();
}
}
package br.edu.ifg.calculator;
import br.edu.ifg.proto.calculator.CalculatorServiceGrpc;
import br.edu.ifg.proto.calculator.SumRequest;
import br.edu.ifg.proto.calculator.SumResponse;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
doUnaryCall(channel);
}
}
Neste laboratório exploramos apenas o tipo de comunicação unária em gRPC. Além dessa é possível utili-
zar client streaming, server streaming ou bidirecional streaming. A definição completa da aplicação exploran-
do esses outros conceitos pode ser encontrado nos links abaixo:
• https://github.com/simplesteph/grpc-java-course/blob/master/src/main/proto/calculator/
calculator.proto
• https://github.com/simplesteph/grpc-java-course/tree/master/src/main/java/com/github/simplesteph/
grpc/calculator
Referências
• G. Coulouris, J. Dollimore, T. Kindberg e G. Blair. Sistemas Distribuídos: Conceitos e Projetos. 5a
Edição, 2013
• https://github.com/simplesteph/grpc-java-course