공식문서 gRPC 자바 퀵스타트 따라해보기
이 글은 gRPC 공식문서에 있는 글을 기반으로 따라해보며 작성된 글입니다.
위에 보면 예제코드 가져오는 방법이 나와있다. 나는 Intellij로 켜서 따로 ./gradlew installDist
등의 명령어를 사용하지 않았다.
위와 같이 Gradle
에 등록된 Task
들이 수행되고 로그가 남는다. 앞으로 이 예제 코드를 많이 참조해야겠다.
위와 같이 잘 수행된다.
추가적인 서버 메소드를 추가함으로써 앱을 업데이트해보자. gRPC 서비스는 프로토콜 버퍼에 정의되어 있다. .proto
파일을 정의하는 것에 대해 배우고 싶다면 베이직 튜토리얼에서 진행해볼 수 있다. 이번에 우리가 알아야할 부분은 서버와 클라이언트 stub
모두에 SayHello()
라는 RPC 메소드가 있다는 것이고, SayHello()
메소드가 HelloRequest
파라미터를 클라이언트로 부터 받아서 HelloReply
를 서버로부터 반환한다는 것이다. 메소드는 아래와 같이 정의되어 있다.
// The greeting service definition
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
퀵스타트에서 src/main/proto/helloworld.proto
파일을 열고, 새로운 SayHelloAgain()
메소드를 만들어보라고 한다.
위와 같이 만들고 저장해보자.
프로젝트를 다시 빌드하면, 빌드 프로세스가 GreeterGrpc.java
를 다시 생성한다. 해당 파일에는 gRPC 클라이언트와 서버 클래스들을 갖고 있다. 또한 요청과 반환 타입들에 대해 데이터를 덧붙이고, 직렬화하고 가져올 수 있는 클래스들도 재생성한다.
하지만, 여전히 새로운 메소드를 호출하는 부분은 직접 구현해야 한다.
src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java
파일을 열어서 새로운 메소드를 구현해주자.
sayHello()
메소드와 똑같이 sayHelloAgain()
메소드를 구현해주었다.
src/main/java/io/grpc/examples/helloworld/HelloWorldClient.java
파일을 수정해서 메소드를 호출하는 부분을 다음과 같이 만들어주자.
서버에 요청을 날릴 때 새로 만든 sayHelloAgain()
에 대한 요청도 보내주었다.