How confluentinc/qcon-microservices works
This is a QCon workshop example of Kafka-based order microservices. The main workflow accepts an order over HTTP, writes it to Kafka, validates it, and exposes order status through a materialized view; a separate stream-table join sends email. The README also describes customer/order event generators. Some implementation relationships are supported only by README descriptions or the SOURCE INDEX, so unsampled details are not expanded into extra call edges.
Main entry points: OrderService.java Order Service · EmailService.java Email Service · OrderDetailsService.java Order Validator · domain Order Models
Components 15
Order API
- Order Service
src/main/java/io/confluent/qcon/orders/OrderService.java - Order View
src/main/java/io/confluent/qcon/orders/OrderService.java
Event Processing
- Order Validator
src/main/java/io/confluent/qcon/orders/OrderDetailsService.java - Order Events
src/main/java/io/confluent/qcon/orders/domain/Schemas.java - Order Generator
src/main/java/io/confluent/qcon/orders/utils/ProduceOrders.java
Email Workflow
- Email Service
src/main/java/io/confluent/qcon/orders/EmailService.java - Email Delivery
src/main/java/io/confluent/qcon/orders/EmailService.java - Customer Events
src/main/java/io/confluent/qcon/orders/domain/Schemas.java - Customer Generator
src/main/java/io/confluent/qcon/orders/utils/ProduceCustomers.java
Shared Runtime
- Order Models
src/main/java/io/confluent/qcon/orders/domain - JSON Serde
src/main/java/io/confluent/qcon/orders/serde - Kafka Config
src/main/java/io/confluent/qcon/orders/utils/LoadConfigs.java - Service Lifecycle
src/main/java/io/confluent/qcon/orders/utils/MicroserviceShutdown.java
Other components
- Order Client
- Kafka Cluster
Connections 20
- Order Client → Order Service: submits and queries
src/main/java/io/confluent/qcon/orders/OrderService.java - Order Service → Kafka Cluster: publishes orders
src/main/java/io/confluent/qcon/orders/OrderService.java - Order Service → Order View: queries status
src/main/java/io/confluent/qcon/orders/OrderService.java - Kafka Cluster → Order View: updates view
src/main/java/io/confluent/qcon/orders/OrderService.java - Order Validator → Kafka Cluster: consumes and republishes
src/main/java/io/confluent/qcon/orders/OrderDetailsService.java - Order Generator → Kafka Cluster: produces orders
src/main/java/io/confluent/qcon/orders/utils/ProduceOrders.java - Email Service → Kafka Cluster: reads event topics
src/main/java/io/confluent/qcon/orders/EmailService.java - Email Service → Email Delivery: sends enriched email
src/main/java/io/confluent/qcon/orders/EmailService.java - Customer Generator → Kafka Cluster: produces customers
README.md - Order Events → JSON Serde: uses JSON serde
src/main/java/io/confluent/qcon/orders/domain/Schemas.java - Customer Events → JSON Serde: uses JSON serde
src/main/java/io/confluent/qcon/orders/domain/Schemas.java - Order Service → Kafka Config: loads configuration
src/main/java/io/confluent/qcon/orders/OrderService.java - Order Validator → Kafka Config: loads configuration
src/main/java/io/confluent/qcon/orders/OrderDetailsService.java - Email Service → Kafka Config: loads stream configuration
src/main/java/io/confluent/qcon/orders/EmailService.java - Order Service → Order Models: uses order model
src/main/java/io/confluent/qcon/orders/OrderService.java - Order Validator → Order Models: validates order model
src/main/java/io/confluent/qcon/orders/OrderDetailsService.java - Email Service → Order Models: joins orders and customers
src/main/java/io/confluent/qcon/orders/EmailService.java - Order Service → Service Lifecycle: registers shutdown
src/main/java/io/confluent/qcon/orders/OrderService.java - Order Validator → Service Lifecycle: registers shutdown
src/main/java/io/confluent/qcon/orders/OrderDetailsService.java - Email Service → Service Lifecycle: registers shutdown
src/main/java/io/confluent/qcon/orders/EmailService.java