Sample project to demonstrate usage of orchestrated (via Kafka) microservice SAGA + Outbox(Polling) patterns. Project based on Spring Boot Webflux framework using non-blocking code until SQL data storage (JPA part is blocking). Supported currencies EUR, USD.
Implementation with support of schema-registry
can be found here.
-
Spring Cloud - API Gateway with filters (rate-limit, circuit-breaker)
-
Spring Boot - Webflux microservices (using Non-blocking Kafka prod/cons)
-
Kafka
-
PostgreSQL / H2 (Blocking drivers)
-
Java 11 (OpenJDK 11+)
-
Gradle 6.3 (Kotlin 1.3+)
-
Intellij CE 2019.1+ (IDE)
-
Docker (Docker compose)
-
Docker
-
IDE (locally)
docker-compose up -d --build
# Set main classes for each microservice (agw, account, payment)
# Set -Dspring.profiles.active=psql or -Dspring.profiles.active=h2 as VM option (account, payment)
# Run docker compose for Kafka
docker-compose -f docker-compose-ide.yml up -d
Then hit http://localhost:3000/docs
for more info.
Use one of supported accounts:
Username / IBAN | Password |
---|---|
AT483200000000000001 |
password |
AT483200000000000002 |
password |