This content needs improvements
  • Improve the "Implementation" section. Explain the separation of concerns
  • Provide other relevant references.
You are welcome to edit this page. You can search for and contribute to previous discussions about this page or start a new one .

Messaging Module

This module contains all necessary components and building blocks to provide scalable, robust, and hassle-free messaging between components.

Messaging in the high-level application architecture
Figure 1. Messaging in the high-level application architecture

Design considerations

Distinct components communicate between each other via messages. The intention is to ensure location transparency, meaning one component doesn’t need to know the location of the other component. Location transparency, allows developers and operators to scale and distribute these components as necessary.

Messaging is a straightforward concept. A producer creates a payload and packages it in a message. It then sends the message to some message bus which delivers it to a consumer. The consumer unpacks the message, extracts the payload, and does something with it.

Implementing this concept, though, is far from simple and straightforward. A robust solution needs to consider multiple functional and non-functional requirements. Such as

  • message types and their respective routing patterns

  • message buses

  • metadata

  • correlation

  • serialization

  • error handling

  • transactions

  • …​