Spring Boot service for event ingestion and tracking with PostgreSQL, RabbitMQ, and Spring Cloud Config.
Stack: Java 21, Spring Boot 3.5.7, PostgreSQL, RabbitMQ, Flyway, MapStruct, ShedLock
- Prerequisites: Java 21, Docker, Maven
- Start dependencies:
./eventtracker.sh deps
- Run the app:
./mvnw spring-boot:run
- Open: http://localhost:9081
EventTracker ──▶ Config Server (8888) ──▶ jubilant-memory Git repo
│
├──▶ PostgreSQL (6433)
└──▶ RabbitMQ (5672)
Configuration loads in order: application.yml → config server profile (eventstracker-local.yml / eventstracker-prod.yml) → environment variables.
- Run
./eventtracker.sh depsin a terminal (services stay running in Docker) - Open project in IntelliJ, set active profile to
local - Run/Debug
EventServiceApplication
The local profile auto-loads .env generated by dev-up.sh.
Set environment variables and run with the prod profile:
export SPRING_PROFILES_ACTIVE=prod
export CONFIG_SERVER_URL=http://sathish-config-server:8888
export EVENTS_TRACKER_DB_URL=<jdbc-url>
export EVENTS_TRACKER_DB_USER=<user>
export EVENTS_TRACKER_DB_PASSWORD=<password>
export RABBITMQ_HOST=<host>
export RABBITMQ_USERNAME=<user>
export RABBITMQ_PASSWORD=<password>| Command | Description |
|---|---|
./eventtracker.sh check |
Validate prerequisites |
./eventtracker.sh dev |
Local DB only (no config server) |
./eventtracker.sh deps |
Config server + DB + RabbitMQ |
./eventtracker.sh start |
Full stack including app |
./eventtracker.sh cloud |
Switch .env to cloud DB |
./eventtracker.sh status |
Show running services and ports |
./eventtracker.sh stop |
Stop all containers |
./eventtracker.sh mappers |
Regenerate MapStruct sources |
Failed to configure a DataSource— run./eventtracker.sh depsthen verify.envexistspassword authentication failed— re-run./eventtracker.sh depsto re-sync DB role- Config server unreachable —
curl http://localhost:8888/actuator/health - General diagnostics —
./eventtracker.sh check && ./eventtracker.sh status
CI enforces that changes to src/, pom.xml, Dockerfile, or operational scripts must include a README update in the same commit.