The goal is to create a system for uploading and processing files. It should consist of two microservices, one responsible for file uploading and retrieval (Files API), and another responsible for file processing (Processing API). Each microservice should reside in a separate main package.
The Files API microservice should expose an HTTP endpoint for uploading files. Once a file is uploaded, it should be saved to the file system, and its ID should be sent to the Processing API via a RabbitMQ queue.
The Processing API microservice should provide functionality for processing and optimizing images. It should accept file ID from a RabbitMQ queue, reduce the image size and overwrite the file in the file system.