Thursday, July 3, 2025

Building a Server-Side Streaming gRPC Service in Spring Boot: A Stock Ticker Demo

🧠What is gRPC and Why Use It?

This project demonstrates how to implement server-side streaming using gRPC in a Spring Boot application with Java 11. The use case simulates a stock ticker that streams real-time stock prices to the client.

🔧 Technologies Used

  • Java 11
  • Spring Boot 2.7.x
  • gRPC (1.54.0)
  • Protocol Buffers (proto3)
  • Maven
  • WebFlux + Server-Sent Events (SSE) for REST integration

Code Repository Link 

Linkgrpc-stock-streaming-rest

Generate gRPC Java Code -  mvn clean compile

Run the Application -  mvn spring-boot:run

REST to gRPC Streaming via SSE GET - http://localhost:8080/api/stream?symbol=AAPL

Project Structure

  • grpc-stock-streaming/ ├── pom.xml ├── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── grpc/ │ │ ├── GrpcApplication.java # Bootstraps Spring Boot │ │ ├── StockService.java # gRPC service implementation │ │ ├── StockClient.java # gRPC client stub (non-blocking) │ │ └── StockController.java # REST API exposing SSE endpoint │ ├── proto/ │ │ └── stock.proto # gRPC service + messages │ └── resources/ │ └── application.properties # gRPC & Spring server config

✅ Class Explanations


✅ stock.proto Explained in Detail

  • syntax = "proto3"; option java_multiple_files = true; option java_package = "com.example.grpc"; option java_outer_classname = "StockProto"; service StockTicker { rpc StreamStockPrices (StockRequest) returns (stream StockResponse); } message StockRequest { string symbol = 1; } message StockResponse { string symbol = 1; double price = 2; }

✅ REST → gRPC Call Flow Diagram


  • Browser / Postman / curl │ ▼ GET /api/stream?symbol=AAPL (SSE endpoint) │ ▼ StockController │ ▼ StockClient (gRPC Stub) │ ▼ [Non-blocking StreamObserver] │ ▼ gRPC Network Call (localhost:9090) │ ▼ StockService (on Server) │ [5x response] │ ▼ StockClient → REST Stream (Flux/SSE) → Browser

🧠 What is gRPC and Why Use It?

gRPC Server-Side Streaming Anti-Patterns

⚙️ gRPC Streaming Performance vs Other Streaming Protocols

You may also like

Kubernetes Microservices
Python AI/ML
Spring Framework Spring Boot
Core Java Java Coding Question
Maven AWS