gRPC는 프로토콜 버퍼를 기반으로 한 원격 프로시저 호출(RPC) 프레임워크로, 자바로 gRPC 서버를 구현하는 방법에 대해 알아보겠습니다.
-
의존성 추가하기 gRPC를 사용하기 위해서는 먼저 프로젝트에 gRPC 관련 의존성을 추가해야 합니다. Maven 프로젝트의 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다:
<dependencies> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty</artifactId> <version>1.40.1</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>1.40.1</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>1.40.1</version> </dependency> </dependencies>
-
gRPC 서비스 정의하기 protobuf 파일로 gRPC 서비스를 정의해야 합니다.
*.proto
파일을 생성하고, 서비스 및 메서드를 정의합니다. 예를 들어,HelloService.proto
파일에 다음과 같이 정의할 수 있습니다:syntax = "proto3"; package com.example.grpc; service HelloService { rpc SayHello (HelloRequest) returns (HelloResponse) {} } message HelloRequest { string name = 1; } message HelloResponse { string message = 1; }
-
서버 구현하기 gRPC 서버를 구현하기 위해 자바 클래스를 작성해야 합니다. 이 클래스는 gRPC 서비스의 인터페이스를 구현하고, 메서드를 오버라이드해야 합니다. 예를 들어,
HelloServiceServer
클래스를 다음과 같이 작성할 수 있습니다:package com.example.grpc; import io.grpc.stub.StreamObserver; public class HelloServiceServer extends HelloServiceGrpc.HelloServiceImplBase { @Override public void sayHello(HelloRequest request, StreamObserver<HelloResponse> responseObserver) { String name = request.getName(); String message = "Hello, " + name + "!"; HelloResponse response = HelloResponse.newBuilder() .setMessage(message) .build(); responseObserver.onNext(response); responseObserver.onCompleted(); } }
-
서버 시작하기 gRPC 서버를 실행하기 위해 메인 클래스를 작성해야 합니다. 예를 들어,
HelloServer
클래스를 다음과 같이 작성할 수 있습니다:package com.example.grpc; import io.grpc.Server; import io.grpc.ServerBuilder; import java.io.IOException; public class HelloServer { private static final int PORT = 50051; public static void main(String[] args) throws IOException, InterruptedException { Server server = ServerBuilder.forPort(PORT) .addService(new HelloServiceServer()) .build(); server.start(); System.out.println("Server started on port " + PORT); server.awaitTermination(); } }
-
서버 실행하기
HelloServer
클래스를 실행하여 gRPC 서버를 시작할 수 있습니다. 서버가 시작되고 클라이언트 요청을 처리할 준비가 되면, “Server started on port 50051” 메시지가 출력됩니다.
이제 자바에서 gRPC 서버를 구현하는 방법에 대해 알게되었습니다. gRPC를 사용하면 효율적이고 안정적인 원격 프로시저 호출을 구현할 수 있습니다. gRPC 공식 문서에서 더 많은 정보를 찾을 수 있으니 참고하시기 바랍니다.
참고 문서:
- gRPC Java 공식 문서: https://grpc.io/docs/languages/java/
- Protocol Buffers 공식 문서: https://developers.google.com/protocol-buffers/docs/proto3