> For the complete documentation index, see [llms.txt](https://marblejs.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://marblejs.gitbook.io/docs/messaging/core-concepts.md).

# Core concepts

## Overview

While you might have used REST as your service communications layer in the past, more and more projects are moving to an event-driven architecture. When a service performs some piece of work that other services might be interested in, that service produces an *event* — a record of the performed action. Other services consume those events so that they can perform any of their own tasks needed as a result of the event.

Since version 3.0, event-based communication is the framework prime focus of interest. It defines a uniform interface for asynchronous processing of incoming events. The mental model is very similar to other popular libraries that you can find in the frontend, like — `redux-observable` or `ngrx/effects`. Both libraries had a huge influence on design and architectural decisions.&#x20;

Messaging module can be applied to variety of models, including the post popular: queue, "pub/sub"-based [microservice](/docs/messaging/microservices.md) communication, [CQRS](/docs/messaging/cqrs.md) or EventSourcing.

{% content-ref url="/pages/-M-Rdj4-gGMRcZJ09EsM" %}
[Microservices](/docs/messaging/microservices.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M-RdbkPqCRMgipLWj8i" %}
[CQRS](/docs/messaging/cqrs.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M-RfgMM5OSzOwlli\_nX" %}
[WebSockets](/docs/messaging/websockets.md)
{% endcontent-ref %}
