데브허브 | DEVHUB | Spring Boot + gRPC Bidirectional Streaming Explained 🚀 | Real-Time Example | @JavatechieSpring Boot + gRPC Bidirectional Streaming Explained 🚀 | Real-Time Example | @Javatechie
- gRPC 양방향 스트리밍은 클라이언트와 서버가 동시에 데이터를 주고받는 실시간 통신 패턴입니다. 💬
- WhatsApp 채팅처럼 양측이 서로의 완료를 기다리지 않고 지속적으로 대화하는 방식입니다. 🔄
- 실시간 주식 거래 예시를 통해 클라이언트가 주식 심볼을 보내고 서버가 실시간 업데이트를 제공하는 시나리오를 설명합니다. 📈
.proto 파일에 stream 키워드를 사용하여 요청과 응답 모두 스트리밍임을 명시하는 liveTrading RPC 메서드를 정의합니다. 📝
tradeStatus와 같은 사용자 정의 메시지 타입을 정의하여 주문 ID, 상태, 메시지, 타임스탬프 등의 필드를 포함합니다. 📦
mvn clean install을 통해 .proto 파일 변경 사항을 반영하여 Java 클래스를 자동으로 생성합니다. ⚙️
- 서버는
StreamObserver를 통해 클라이언트의 stockOrder 스트림을 비동기적으로 받고, 각 요청에 대해 tradeStatus를 생성하여 responseObserver.onNext()로 응답합니다. 💻
- 클라이언트는
stub을 사용하여 서버 RPC를 호출하고, StreamObserver로 서버 응답을 받으면서 동시에 requestObserver.onNext()로 요청 스트림을 서버로 보냅니다. 📱
- 클라이언트가 10개의 더미 주문을 보내고 서버가 실시간으로 응답하는 과정을 통해 양방향 통신의 동시성을 시연합니다. 🚀
gRPCurl과 같은 명령줄 도구를 사용하여 스트리밍 gRPC 서비스를 테스트합니다. 🛠️