How manuelrodnav/microservices-ticketing-backend works
This repository is a Spring-based ticketing backend split across an API gateway, booking, inventory, and order services. A client enters through the gateway; booking checks the customer and inventory, then publishes a booking event. The order service consumes it, persists an order, and requests an inventory update. Inventory also exposes event and venue lookups and capacity management. The README documents Keycloak, Kafka, MySQL, and resilience capabilities; sampled code confirms Kafka flow and service calls, but not all configuration or gateway wiring, so uncertain links are omitted or marked unverified.
Main entry points: bookingService.java Booking Orchestration · inventoryService.java Inventory Operations · orderService.java Order Processing · InventoryController.java Inventory API
Components 23
API Gateway
- Service Routes
apigateway/src/main/java/com/apigateway/route/BookingServiceRoute.java - OAuth2 Security
apigateway/src/main/java/com/apigateway/config/SecurityConfig.java
Booking Service
- Booking API
bookingservice/src/main/java/com/bookingservice/Controller/BookingController.java - Booking Orchestration
bookingservice/src/main/java/com/bookingservice/services/bookingService.java - Booking Request
bookingservice/src/main/java/com/bookingservice/BookingRequest.java - Customer Lookup
bookingservice/src/main/java/com/bookingservice/Repository/CustomerRepository.java - Inventory Client
bookingservice/src/main/java/com/bookingservice/Client/InventoryServiceClient.java - Booking Event
orderservice/src/main/java/com/bookingservice/Events/BookingEvents.java - Booking Result
bookingservice/src/main/java/com/bookingservice/Response/BookingResponse.java
Inventory Service
- Inventory API
inventoryservice/src/main/java/com/inventoryservice/InventoryController.java - Inventory Operations
inventoryservice/src/main/java/com/inventoryservice/service/inventoryService.java - Event Repository
inventoryservice/src/main/java/com/inventoryservice/Repository/EventRepository.java - Venue Repository
inventoryservice/src/main/java/com/inventoryservice/Repository/VenueRepository.java - Event Model
inventoryservice/src/main/java/com/inventoryservice/Entity/Event.java - Venue Model
inventoryservice/src/main/java/com/inventoryservice/Entity/Venue.java
Order Service
- Order Processing
orderservice/src/main/java/com/orderservice/Service/orderService.java - Inventory Updater
orderservice/src/main/java/com/orderservice/Client/InventoryClient.java - Order Repository
orderservice/src/main/java/com/orderservice/Repository/orderRepository.java - Order Model
orderservice/src/main/java/com/orderservice/Entity/Order.java
Other components
- API Client
- Keycloak IdP
- Kafka
- MySQL Store
Connections 26
- API Client → Service Routes: sends requests
README.md - Service Routes → Booking API: routes bookings
README.md - Service Routes → Inventory API: routes inventory
README.md - OAuth2 Security → Keycloak IdP: uses identity
README.md - Booking API → Booking Orchestration: calls
bookingservice/src/main/java/com/bookingservice/Controller/BookingController.java - Booking API → Booking Request: accepts
bookingservice/src/main/java/com/bookingservice/Controller/BookingController.java - Booking Orchestration → Customer Lookup: looks up customer
bookingservice/src/main/java/com/bookingservice/services/bookingService.java - Booking Orchestration → Inventory Client: checks availability
bookingservice/src/main/java/com/bookingservice/services/bookingService.java - Booking Orchestration → Booking Event: creates and publishes
bookingservice/src/main/java/com/bookingservice/services/bookingService.java - Booking Orchestration → Kafka: sends event
bookingservice/src/main/java/com/bookingservice/services/bookingService.java - Booking Orchestration → Booking Result: builds result
bookingservice/src/main/java/com/bookingservice/services/bookingService.java - Order Processing → Kafka: consumes event
orderservice/src/main/java/com/orderservice/Service/orderService.java - Order Processing → Order Model: creates order
orderservice/src/main/java/com/orderservice/Service/orderService.java - Order Processing → Order Repository: persists order
orderservice/src/main/java/com/orderservice/Service/orderService.java - Order Processing → Inventory Updater: requests capacity update
orderservice/src/main/java/com/orderservice/Service/orderService.java - Inventory API → Inventory Operations: calls operations
inventoryservice/src/main/java/com/inventoryservice/InventoryController.java - Inventory Operations → Event Repository: reads and updates events
inventoryservice/src/main/java/com/inventoryservice/service/inventoryService.java - Inventory Operations → Venue Repository: reads venues
inventoryservice/src/main/java/com/inventoryservice/service/inventoryService.java - Inventory Operations → Event Model: maps event data
inventoryservice/src/main/java/com/inventoryservice/service/inventoryService.java - Inventory Operations → Venue Model: maps venue data
inventoryservice/src/main/java/com/inventoryservice/service/inventoryService.java - Inventory Client → Inventory API: fetches availability
- Inventory Updater → Inventory API: updates capacity
- Event Repository → MySQL Store: uses persistence
- Venue Repository → MySQL Store: uses persistence
- Customer Lookup → MySQL Store: uses persistence
- Order Repository → MySQL Store: uses persistence