Communication flowΒΆ

On a higher level the data exchanged between the different layers is as follows:

The client (could either be a real user or a machine) interacts with the webserver using a secure channel and credentials. When the message is received it usually will be checked for being valid json (or a message is constructed using the request query) and pushed to a queue on RabbitMQ. At that moment the webserver starts waiting for a response message on a queue it opened.

The worker waits for messages on the queue, now there is a request it will fetch it, serializes its content and dispatches it to the correct service code. When the service code completes, it returns a response, which the worker serializes to the response queue opened by the webserver.

As soon as the message is received by the webserver, it will serialize it back again, check for validity and handle errors, finally a response is send back to the client.