Skip to content

manonworldrepository/spring-cloud-stream-cashcard-application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cashcard Application Java CI with Gradle

This project demonstrates a simple, event-driven system using Spring Cloud Stream, Kafka, and Spring Boot with GraalVM native images. All services are designed to run within a Docker environment.

Prerequisites

  • Java 21+
  • Docker and Docker Compose

Building and Running the System

The entire system, including the applications and the end-to-end tests, is managed through Docker Compose.

If you want to build the application faster, you can just pull the necessary images from docker:

docker pull paketobuildpacks/builder-jammy-java-tiny:latest
docker pull paketobuildpacks/run-jammy-tiny:latest

1. Build the Application Docker Images

First, build the native Docker images for the source, enricher and sink services using the Spring Boot Gradle plugin.

  ./gradlew clean bootBuildImage --no-daemon

Or you can build one image after another like so:

./gradlew :cashcard-transaction-source:bootBuildImage --no-daemon
./gradlew :cashcard-transaction-enricher:bootBuildImage --no-daemon
./gradlew :cashcard-transaction-sink:bootBuildImage --no-daemon

Then in order to be able to run everything in docker containers, just run the following command:

  docker compose up -d --build

Application's Endpoint URL:

http://localhost:8080/pub

HTTP Method: POST

Example Payload:

{
    "id": 1234,
    "cashCard": {
        "id": 12345,
        "owner": "testOwner",
        "amountRequestedForAuth": "3.14"
    }
}

You can also check requests.http to run the same request.

Architecture Overview

Architecture Overview

Running Tests

./gradlew clean test

Grafana Dashboard

The system starts with a preconfigured Prometheus datasource and a basic "CashCard System Overview" dashboard.

URL: http://localhost:3000

Username: admin

Password: admin

A screenshot of Grafana Dashboard should look like so:

Grafana Dashboard

Packages

 
 
 

Contributors

Languages