Implement reliable event delivery using Outbox Pattern with consumer confirmation: ## planting-service (Producer) - Add OutboxEvent table with status: PENDING → SENT → CONFIRMED - Add OutboxRepository with transaction support and timeout handling - Add OutboxPublisherService with polling, timeout check, and retry - Add EventAckController to receive consumer confirmations - Update UnitOfWork to save outbox events atomically with business data - Update PlantingApplicationService to use outbox pattern - Update PoolInjectionService to use outbox pattern ## Consumer Services - Add EventAckPublisher to reward-service, referral-service, authorization-service - Update event handlers to send acknowledgment after successful processing ## Event Flow 1. Business data + outbox events saved in same transaction 2. OutboxPublisher polls and sends to Kafka, marks as SENT 3. Consumer processes event and sends ack to planting.events.ack 4. EventAckController receives ack and marks as CONFIRMED 5. Timeout check resets SENT→PENDING for retry (max 5 times) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| backend | ||
| docs | ||
| frontend | ||
| kubernetes | ||
| scripts | ||
| tests | ||
| .gitignore | ||
| README.md | ||
| docker-compose.yml | ||