.. SPDX-FileCopyrightText: 2024 Univention GmbH
..
.. SPDX-License-Identifier: AGPL-3.0-only

.. _overview-message-queue:

Message queues
==============

Nubus for Kubernetes requires message queues for various application components.
It uses :program:`NATS` for the message queue capability.
This section describes what application components use message queues.
The purpose of :program:`NATS` is to pass data objects between application components
ensuring sequential delivery.

:numref:`overview-message-queue-fig`
shows that the *Provisioning Service* functional component is the only user
of the NATS message queue.
The following application components within the *Provisioning Service* rely on it:

* *UDM Listener*
* *UDM Transformer*
* *Dispatcher*
* *Events and Consumer API*
* *Prefill Service*

.. _overview-message-queue-fig:

.. figure:: /images/Message_Queue_overview.*
   :target: ../_images/Message_Queue_overview.svg
   :alt: Overview of application components using NATS message queues

   Overview of application components using NATS message queues


:numref:`overview-message-queue-provisioning-fig` provides a detailed view.
It shows which application components access which queue
through read or write operations.

.. _overview-message-queue-provisioning-fig:

.. figure:: /images/Message_Queue_Provisioning_Service.*
   :target: ../_images/Message_Queue_Provisioning_Service.svg
   :alt: Application components in Provisioning Service using NATS message queues

   Application components in the *Provisioning Service* using NATS message queues

.. seealso::

   :ref:`component-provisioning-service` in components section
      for information about internal components and behavior.

   :ref:`data-objects-event` in data objects section
      for information about the data object in the queues for the *Provisioning Service*.
