Skip to main content

Estructura Bus de Datos

Componentes Principales:

Estructura Rabbit

Bindings:

  • Ingest Exchange -> Raw Data Queue: Los mensajes entrantes se enrutan desde el ingest-exchange a la raw-data-queue.
  • Raw Data Queue -> Processing Exchange: Los mensajes se toman de la raw-data-queue y son reenviados al processing-exchange para ser procesados.
  • Processing Exchange -> Processing Queue: Los mensajes son enviados a la processing-queue para realizar las operaciones necesarias (como la transformación).
  • Processing Queue -> Snowflake Queue: Los datos transformados son enviados desde la processing-queue a la snowflake-queue, donde serán consumidos por un servicio encargado de interactuar con Snowflake.
  • Error Exchange -> Error Queue: Si algún mensaje falla durante el procesamiento, es enviado al error-exchange, que lo reenvía a la error-queue para su revisión.

Exchanges:

  1. Ingest Exchange:

    • Tipo: direct o topic
    • Recibe datos crudos desde diferentes fuentes de datos y distribuye a las colas correspondientes.
    • Un exchange tipo topic puede enrutar los mensajes basados en el origen o tipo de datos (e.g., source.systemA.raw).
  2. Processing Exchange:

    • Tipo: direct
    • Enruta los mensajes desde las colas de procesamiento hacia las colas de almacenamiento en Snowflake.
    • También maneja mensajes hacia la cola de errores en caso de fallos.
  3. Error Exchange:

    • Tipo: direct
    • Enruta los mensajes que fallan en el procesamiento a la cola de errores para su revisión o reproceso.

Queues:

  1. Raw Data Queue:

    • Almacena los datos sin procesar provenientes de diversas fuentes.
    • El Processing Exchange extrae los mensajes para enviarlos a la siguiente etapa de procesamiento.
  2. Processing Queue:

    • Almacena los datos que están siendo transformados antes de enviarlos a Snowflake.
    • Si hay un fallo en el procesamiento, los mensajes pueden ser reenviados al Error Exchange.
  3. Snowflake Queue:

    • Recibe los datos transformados y listos para ser enviados a Snowflake.
    • Los consumidores de esta cola se encargan de interactuar con el API de Snowflake para insertar los datos.
  4. Error Queue:

    • Almacena los mensajes que fallaron en alguna de las etapas de procesamiento, permitiendo una posterior inspección o reproceso manual.

Estructura Detallada:

+---------------------+
| Ingest Exchange | <---- Source Data (APIs, Microservices)
+---------------------+
|
v
+-----------------------+
| Raw Data Queue |
+-----------------------+
|
v
+--------------------+
| Processing Exchange |
+--------------------+
|
+----------------+---------------+
| |
v v
+-----------------------+ +----------------------+
| Processing Queue | | Snowflake Queue |
+-----------------------+ +----------------------+
|
v
+----------------------+
| Error Exchange |
+----------------------+
|
v
+-------------------+
| Error Queue |
+-------------------+
RabbitMQ Data Bus
├── Exchanges
│ ├── ingest-exchange
│ ├── processing-exchange
│ ├── error-exchange
├── Queues
│ ├── raw-data-queue
│ ├── processing-queue
│ ├── snowflake-queue
│ ├── error-queue
├── Bindings
│ ├── ingest-exchange -> raw-data-queue
│ ├── raw-data-queue -> processing-exchange
│ ├── processing-exchange -> processing-queue
│ ├── processing-queue -> processing-exchange (error handling)
│ ├── processing-queue -> snowflake-queue
│ ├── error-exchange -> error-queue