공식문서 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()에 대한 요청도 보내주었다.
