How hskhsmm/1milion-campaign-orchestration-system works
This repository implements a Redis-first, first-come campaign participation system, with asynchronous Kafka persistence and operational recovery/monitoring capabilities. The documented request path atomically validates and reserves stock in Redis, buffers participation, then bridges events to Kafka for batched database handling. Separate batch jobs support aggregation, consistency recovery, and DLQ replay. The MCP server provides monitoring and Slack alerting. Edges follow README statements or shown source references; unsampled implementation details are not assumed.
Main entry points: p1_detector.py Alert Detectors · tools.py MCP Tools · ParticipationBridge.java Participation Bridge · ParticipationService.java Participation Service
Components 27
Participation Flow
- Participation API
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/ParticipationController.java - Participation Service
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/ParticipationService.java - Rate Limiter
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/RateLimitService.java - Redis Stock
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/RedisStockService.java - Redis Queue
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/RedisQueueService.java - Participation Bridge
app/campaign-core/src/main/java/io/eventdriven/campaign/application/bridge/ParticipationBridge.java - Bridge Queue
app/campaign-core/src/main/java/io/eventdriven/campaign/application/bridge/BridgeQueueService.java - Kafka
- Event Consumer
app/campaign-core/src/main/java/io/eventdriven/campaign/application/consumer/ParticipationEventConsumer.java
Campaign Operations
- Campaign Service
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/CampaignService.java - Batch API
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/BatchController.java - Batch Jobs
app/campaign-core/src/main/java/io/eventdriven/campaign/batch - Campaign Aggregation
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/CampaignAggregationService.java
Recovery Handling
- Recovery API
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/ConsistencyRecoveryController.java - Consistency Recovery
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/ConsistencyRecoveryService.java - DLQ Replay API
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/DlqReplayController.java - DLQ Replay
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/DlqReplayService.java - DLQ Messages
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/DlqMessageService.java
Monitoring
- MCP Tools
mcp-server/tools.py - Alert Detectors
mcp-server/detectors/p1_detector.py - Monitor Server
mcp-server/main.py - Alert State
mcp-server/state.py - Prometheus
- Slack
Persistence
- MySQL RDS
Other components
- Client
- Operator
Connections 27
- Client → Participation API: submits
README.md - Participation API → Participation Service: delegates to
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/ParticipationController.java - Participation Service → Rate Limiter: checks limit
- Participation Service → Redis Stock: reserves stock
README.md - Redis Stock → Redis Queue: enqueues
README.md - Participation Bridge → Redis Queue: claims queue
README.md - Participation Bridge → Kafka: publishes
README.md - Kafka → Event Consumer: delivers events
README.md - Event Consumer → MySQL RDS: batch persists
README.md - Participation Bridge → Bridge Queue: uses queue service
- Operator → Batch API: starts jobs
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/BatchController.java - Batch Jobs → Campaign Aggregation: aggregates
- Operator → Recovery API: requests recovery
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/ConsistencyRecoveryController.java - Recovery API → Consistency Recovery: invokes
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/ConsistencyRecoveryController.java - Consistency Recovery → MySQL RDS: reads history
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/ConsistencyRecoveryService.java - Consistency Recovery → Redis Stock: checks stock
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/ConsistencyRecoveryService.java - Operator → DLQ Replay API: starts replay
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/DlqReplayController.java - DLQ Replay API → DLQ Replay: creates execution
app/campaign-core/src/main/java/io/eventdriven/campaign/api/controller/DlqReplayController.java - DLQ Replay → Kafka: republishes
app/campaign-core/src/main/java/io/eventdriven/campaign/application/service/DlqReplayService.java - DLQ Messages → MySQL RDS: stores records
- Operator → MCP Tools: calls tools
mcp-server/tools.py - Monitor Server → MCP Tools: serves tools
mcp-server/main.py - MCP Tools → Alert Detectors: dispatches checks
mcp-server/tools.py - Alert Detectors → Prometheus: queries metrics
mcp-server/detectors/p1_detector.py - Alert Detectors → Alert State: checks cooldown
mcp-server/detectors/p1_detector.py - Alert Detectors → Slack: sends alerts
mcp-server/detectors/p1_detector.py - MCP Tools → Prometheus: queries metrics
mcp-server/tools.py