공식문서 gRPC 자바 퀵스타트 따라해보기

jakeseo_me·2021년 1월 22일
0

네트워크

목록 보기
9/16

공식문서 gRPC 자바 퀵스타트 따라해보기

Prologue

이 글은 gRPC 공식문서에 있는 글을 기반으로 따라해보며 작성된 글입니다.

예제 코드 가져오기

위에 보면 예제코드 가져오는 방법이 나와있다. 나는 Intellij로 켜서 따로 ./gradlew installDist 등의 명령어를 사용하지 않았다.

예제 HelloWorld 서버 실행해보기

위와 같이 Gradle에 등록된 Task들이 수행되고 로그가 남는다. 앞으로 이 예제 코드를 많이 참조해야겠다.

예제 HelloWorld 클라이언트 실행해보기

위와 같이 잘 수행된다.

gRPC 서비스 업데이트 해보기

추가적인 서버 메소드를 추가함으로써 앱을 업데이트해보자. 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()에 대한 요청도 보내주었다.

결과

profile
대전에서 풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글