gRPC 클라이언트 스트리밍은 클라이언트가 여러 요청을 스트림으로 보내고, 서버는 모든 요청을 처리한 후 단일 요약 응답을 반환하는 통신 패턴입니다. 🔄
실시간 데모는 클라이언트가 여러 주식 주문을 보내면, 서버가 이를 모두 처리한 후 총 주문 수, 성공 건수, 총액을 포함하는 단일 주문 요약 응답을 제공하는 시나리오를 보여줍니다. 📈
클라이언트 스트리밍 구현을 위해 .proto 파일에 stream StockOrder를 입력으로 받고 OrderSummary를 반환하는 bulkStockOrder RPC 메서드를 정의합니다. 📝
StockOrder (주문 ID, 심볼, 유형, 가격, 수량) 및 OrderSummary (총 주문, 총액, 성공 건수) 메시지 구조를 정의하여 데이터 교환을 명확히 합니다. 📦
서버는 StreamObserver를 사용하여 클라이언트의 각 요청(onNext)을 처리하며 데이터를 누적하고, 클라이언트 스트림이 완료되면(onCompleted) 누적된 데이터를 기반으로 최종 OrderSummary를 구성하여 단일 응답으로 전송합니다. ⚙️
클라이언트 스트리밍 테스트를 위해 Postman 대신 gRPCurl CLI 도구를 사용하여 .txt 파일의 여러 JSON 주문 객체를 스트림으로 서버에 전송하고, 서버는 단일 요약 응답을 반환함을 확인합니다. 💻
클라이언트는 스텁을 통해 bulkStockOrder를 호출하고, requestObserver.onNext()로 여러 StockOrder를 스트림으로 전송한 후 requestObserver.onCompleted()로 전송 완료를 알립니다. 서버의 단일 응답은 클라이언트의 StreamObserver에서 처리됩니다. 🚀
클라이언트 애플리케이션 실행 시, 세 개의 더미 주문을 스트림으로 전송하고 서버로부터 단일 주문 요약 응답을 성공적으로 수신하여 클라이언트 스트리밍 동작을 검증합니다. ✅