Spring Kafka REST Microservice
Budget: €1,500 – €3,000 EUR
I need a clean Spring Boot microservice that subscribes to a Kafka topic carrying JSON messages, checks each payload for validity, transforms the data to the shape required by an external REST API, and then dispatches it with proper error handling and retries.
Core flow
- Kafka: Spring Kafka consumer reads only JSON messages, converting them to POJOs.
- Validation: apply a JSON-schema or bean-level rules so that malformed records are rejected gracefully and logged.
- Transformation: map the validated data into the DTO expected by the REST endpoint.
- Delivery: POST the result to the target REST API, with exponential-back-off retries and dead-letter routing for failures.
I’d like the project bootstrapped with Java 17+, Spring Boot 3, Kafka, Spring Web. Please keep configuration externalised (application.yml or environment variables) so topics, URLs, credentials, and retry settings can be changed without a re-compile.
Deliverables
1. Full source code in a Maven or Gradle project
2. Dockerfile and docker-compose snippet for local Kafka + the service
3. README that explains setup, config parameters, and how to run unit/integration tests
4. The project must run as a container and is part of a bigger project
5. Detailed architecture diagrams and documentation
Acceptance criteria
- Consumer successfully processes sample messages that cover both valid and invalid cases.
- Transformed payload matches the REST API contract (a Postman collection or curl command demonstrating this is enough).
- All non-transient failures end up in a DLQ topic with the original message and error reason.
If you’ve built similar streaming pipelines before, let’s talk about extending this architecture further once the first version is solid.
Core flow
- Kafka: Spring Kafka consumer reads only JSON messages, converting them to POJOs.
- Validation: apply a JSON-schema or bean-level rules so that malformed records are rejected gracefully and logged.
- Transformation: map the validated data into the DTO expected by the REST endpoint.
- Delivery: POST the result to the target REST API, with exponential-back-off retries and dead-letter routing for failures.
I’d like the project bootstrapped with Java 17+, Spring Boot 3, Kafka, Spring Web. Please keep configuration externalised (application.yml or environment variables) so topics, URLs, credentials, and retry settings can be changed without a re-compile.
Deliverables
1. Full source code in a Maven or Gradle project
2. Dockerfile and docker-compose snippet for local Kafka + the service
3. README that explains setup, config parameters, and how to run unit/integration tests
4. The project must run as a container and is part of a bigger project
5. Detailed architecture diagrams and documentation
Acceptance criteria
- Consumer successfully processes sample messages that cover both valid and invalid cases.
- Transformed payload matches the REST API contract (a Postman collection or curl command demonstrating this is enough).
- All non-transient failures end up in a DLQ topic with the original message and error reason.
If you’ve built similar streaming pipelines before, let’s talk about extending this architecture further once the first version is solid.