> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Recepción de eventos de Midaz

> Consume eventos de Midaz desde Kafka, entiende la superficie heredada de RabbitMQ y revisa el límite de compatibilidad actual de Streaming Hub.

Midaz emite CloudEvents para los hechos de negocio del ledger, CRM, Fees y Tracer. El contrato de integración público actual es la superficie **Kafka/lib-streaming**. El antiguo stream interno de facturación quedó retirado. Los exchanges heredados de RabbitMQ permanecen fuera del catálogo público.

## Superficie de eventos actual: Kafka

***

Habilita la publicación en cada servicio productor:

```env theme={null}
STREAMING_ENABLED=true
STREAMING_BROKERS=<broker-list>
STREAMING_CLOUDEVENTS_SOURCE=ledger
```

Configura `STREAMING_CLOUDEVENTS_SOURCE` cuando habilites el streaming. Usa `ledger` para el binario de ledger, CRM y Fees. Usa `tracer` para Tracer. Cada servicio rechaza cualquier otro valor al iniciar.

Midaz usa un tema de hechos de aplicación v3 por cada servicio productor:

* Ledger, CRM y Fees: `lerian.streaming.ledger`
* Tracer: `lerian.streaming.tracer`

Ejemplos:

* `organization.created` viaja por `lerian.streaming.ledger`
* `transaction.posted` viaja por `lerian.streaming.ledger`
* `fee_charge.applied` viaja por `lerian.streaming.ledger`
* `rule.created` viaja por `lerian.streaming.tracer`

El tipo de CloudEvents está calificado por fuente como `studio.lerian.<source>.<resource>.<event>`. Los encabezados `ce-resourcetype` y `ce-eventtype` llevan la clave de despacho por separado. El encabezado `ce-tenantid` está siempre presente en Midaz. Lleva el ID de tenant resuelto en el ámbito multi-tenant, y el literal `default` en el ámbito de un solo tenant o sin tenant. El esquema del payload es `1.0.0` para el catálogo actual.

El ledger y Tracer exponen cada uno su catálogo público de eventos de negocio en JSON y el mapeo de temas en:

```http theme={null}
GET /v1/streaming/manifest
```

La ruta del manifiesto permanece disponible incluso cuando deshabilitas la publicación. Úsala como el contrato en tiempo de despliegue en lugar de adivinar los temas. La [referencia de eventos de Midaz](/es/reference/events/midaz) y la [referencia de eventos de Tracer](/es/reference/events/tracer) listan todos los eventos de negocio públicos y sus payloads.

### Semántica de entrega

Midaz publica estos eventos de negocio directamente después del cambio de estado. No los persiste en un outbox de streaming. Midaz registra los fallos de publicación y no los devuelve al comando de negocio. Los consumidores deben ser idempotentes y deduplicar por `(ce-source, ce-id)` porque la entrega del broker puede repetir un registro publicado. Los valores monetarios usan cadenas decimales. Nunca los interpretes como punto flotante binario.

### Lista de verificación del consumidor

1. Lee el manifiesto del productor.
2. Suscríbete al tema de aplicación del productor.
3. Enruta según `ce-resourcetype` y `ce-eventtype`, no según la forma del payload.
4. Valida `ce-schemaversion` antes de decodificar.
5. Persiste tu clave de deduplicación antes de confirmar el registro.

## Superficie heredada de RabbitMQ

***

Midaz también mantiene exchanges heredados de RabbitMQ para eventos seleccionados de sobregiro y auditoría. Esto no es el catálogo completo de lib-streaming.

La configuración de ejemplo incluida distribuye estos exchanges salientes deshabilitados. Si los habilitas, tú eres responsable de los bindings de colas, `ack`/`nack`, dead-lettering, reintentos y aislamiento de consumidores. El pipeline interno asíncrono de operaciones de saldo de transacciones controlado por `RABBITMQ_TRANSACTION_ASYNC` no es un feed de eventos público.

Usa la superficie de Kafka para las integraciones nuevas, a menos que dependas explícitamente de un contrato heredado de RabbitMQ.

## Compatibilidad con Streaming Hub

***

Streaming Hub sigue los temas de aplicación v3 de Midaz `lerian.streaming.ledger` y `lerian.streaming.tracer`. Por eso, una suscripción puede recibir hechos de Midaz cuando habilitas el productor, la ingesta del hub y el runtime de destino. Haz coincidir según la clave de evento de `ce-resourcetype` y `ce-eventtype`. No esperes un tema de Kafka por evento.

## Decisión

***

| Necesidad                                                           | Usa                                      |
| ------------------------------------------------------------------- | ---------------------------------------- |
| Catálogo público de eventos de negocio de Midaz                     | Consumo directo de Kafka o Streaming Hub |
| Integración de compatibilidad existente en exchanges seleccionados  | RabbitMQ heredado                        |
| Entrega administrada por webhook, pull, SQS, RabbitMQ o EventBridge | Suscripción de Streaming Hub             |
