ADR-003 — Asynchronous messaging

ADR

ADR-003

Title

Asynchronous messaging

State

Accepded

Author

klenkes74

Decision Body

klenkes74

Valid from

2024-10-06

Expires

./.

1. Context

The systems need a way of communicating asynchronously. This is used for transferring data to the non data-managing systems. Non data-managing systems are all systems that depend on another system to provide management functionality for data needed by the system. Basically every is a non data-managing system for some date and a data-managing system for other data.

But also the players and operatives logging methods of all systems rely on this functionality.

2. Decision

We use an AMQP broker to transfer messages. AMQP is a standardized protocol for transferring asynchronous data even between organizations. It can be easily provided and managed on k8s via the operators provided by the RabbitMQ project.

The handling of receiving messages has to be separated from managing HTTP based synchronous communications.

3. Consequences

  1. Every SCS should be split in at least three maven modules:

    1. http handling,

    2. messaging handling, and

    3. model.

    That way the model is shared between the http and messaging handling parts. Since this is within the SCS, it does not break the SCS architectural model but still fulfills the DRY principle.

  2. The data transfer into the http handling part is done via the database used by the SCS. This adds to the latency to reach eventual consistency.