Estructura Bus de Datos
Componentes Principales:

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:
-
Ingest Exchange:
- Tipo:
directotopic - Recibe datos crudos desde diferentes fuentes de datos y distribuye a las colas correspondientes.
- Un exchange tipo
topicpuede enrutar los mensajes basados en el origen o tipo de datos (e.g.,source.systemA.raw).
- Tipo:
-
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.
- Tipo:
-
Error Exchange:
- Tipo:
direct - Enruta los mensajes que fallan en el procesamiento a la cola de errores para su revisión o reproceso.
- Tipo:
Queues:
-
Raw Data Queue:
- Almacena los datos sin procesar provenientes de diversas fuentes.
- El
Processing Exchangeextrae los mensajes para enviarlos a la siguiente etapa de procesamiento.
-
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.
-
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.
-
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