Inspiration

This application implements a bank system and, since such a system may be very large and complex, only a small part of it is partially represented here: a simplified payment service based on a money transfer workflow.

NOTA BENE: This application, as implemented here, is far from being production ready. It's only a simple text book case, developed in a couple of days and aiming at being presented to this contest, such that to highlight some of the most essential Eclipse Microprofile, Quarkus and Openshift features. Accordingly, the application might lack lots of enterprise grade functionalities like security, optimizations, ergonomic and others.

What it does

This project shows four microservices implemented using Apache Camel on Quarkus, as follows:

  • xfer-file: this microservice is polling the /tmp/input local folder and, as soon as an XML file is coming, it stores it in an AWS S3 bucket, which name starts with mys3 followed by a random suffix.
  • xfer-s3: this microservice is listening on the first found AWS S3 bucket which name starts with mys3 and, as soon as an XML file comes in, it splits, tokenizes and streams it, before sending each message to an AWS SQS queue, which name is myQue.
  • xfer-sqs: this microservice subscribes for messages to the AWS SQS queue named myQueue and, for each incoming message, unmarshall it from XML to Java objects, the marshal it to JSON format, before sending it to the REST service below.
  • xfer-jaxrs: this microservice exposes a REST API having endpoint for CRUDing money transfer orders. It consumes/produces JSON input/output data. It uses a service which exposes and interface defined by xfer-api project. Several implementations of this interface might be present but, for simplicity sake, in the current case we're using the one defined by xfer-provider project, named DefaultMoneyTransferProvider, which only CRUds the money transfer order requests in an in-memory hash map.

How we built it

The microservices are compiled using Java 17 and built using maven. They are deployed on the Openshift platform. The README.md file included with the project provides extensive guideline for building, deploying and testing the application.

Built With

Share this project:

Updates