> ## 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.

# Recebendo eventos do Midaz

> Consuma eventos do Midaz via Kafka, entenda a superfície legada do RabbitMQ e veja o limite atual de compatibilidade com o Streaming Hub.

O Midaz emite CloudEvents para fatos de negócio do ledger, CRM, Fees e Tracer. O contrato público de integração é a superfície **Kafka**. Os exchanges legados do RabbitMQ permanecem fora do catálogo público.

## Superfície de eventos atual: Kafka

***

Habilite a publicação em cada serviço produtor:

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

Defina `STREAMING_CLOUDEVENTS_SOURCE` quando você habilitar o streaming. Use `ledger` para o binário do ledger, CRM e Fees. Use `tracer` para o Tracer. Cada serviço rejeita qualquer outro valor na inicialização.

O Midaz usa um tópico de fatos de aplicação v3 por serviço produtor:

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

Exemplos:

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

O tipo do CloudEvents é qualificado pela origem como `studio.lerian.<source>.<resource>.<event>`. Os headers `ce-resourcetype` e `ce-eventtype` carregam a chave de despacho separadamente. O header `ce-tenantid` está sempre presente para o Midaz. Ele carrega o seu tenant ID, ou o literal `default` quando o evento não tem tenant.

O ledger e o Tracer disponibilizam, cada um, seu catálogo público de eventos de negócio em JSON e o mapeamento de tópicos em:

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

A rota do manifesto permanece disponível mesmo quando você desabilita a publicação. Use-a como o contrato em tempo de deploy em vez de adivinhar os tópicos. A [referência de eventos do Midaz](https://docs.lerian.studio/pt/reference/events/midaz.md) e a [referência de eventos do Tracer](https://docs.lerian.studio/pt/reference/events/tracer.md) listam todo evento de negócio público e seu payload.

### Semântica de entrega

O Midaz publica esses eventos de negócio diretamente após a mudança de estado. Ele não os persiste em um outbox de streaming. O Midaz registra falhas de publicação em log e não as retorna ao comando de negócio. Os consumidores ainda devem ser idempotentes e deduplicar por `(ce-source, ce-id)`, porque a entrega do broker pode repetir um registro publicado. Valores monetários usam strings decimais. Nunca as interprete como ponto flutuante binário.

### Checklist do consumidor

1. Leia o manifesto do produtor.
2. Inscreva-se no tópico de aplicação do produtor.
3. Roteie por `ce-resourcetype` e `ce-eventtype`, não pelo formato do payload.
4. Valide `ce-schemaversion` antes de decodificar.
5. Persista sua chave de deduplicação antes de confirmar o registro.

## Superfície legada do RabbitMQ

***

O Midaz também mantém exchanges legados do RabbitMQ para eventos selecionados de overdraft e auditoria. Isso não é o catálogo completo do Kafka.

Se você usar esses exchanges, você é responsável pelos queue bindings, `ack`/`nack`, dead-lettering, novas tentativas e isolamento de consumidores. O pipeline interno assíncrono de operação de saldo da transação, controlado por `RABBITMQ_TRANSACTION_ASYNC`, não é um feed público de eventos.

Use a superfície do Kafka para novas integrações, a menos que você dependa explicitamente de um contrato legado do RabbitMQ.

## Compatibilidade com o Streaming Hub

***

O Streaming Hub segue os tópicos de aplicação v3 do Midaz `lerian.streaming.ledger` e `lerian.streaming.tracer`. Por isso, uma subscription pode receber fatos do Midaz quando você habilita o produtor, a ingestão do hub e o runtime de destino. Corresponda usando a chave de evento de `ce-resourcetype` e `ce-eventtype`. Não espere um tópico Kafka por evento.

## Decisão

***

| Necessidade | Uso |
| - | - |
| Catálogo público de eventos de negócio do Midaz | Consumo direto via Kafka ou Streaming Hub |
| Integração de compatibilidade existente em exchanges selecionados | RabbitMQ legado |
| Entrega gerenciada via webhook, pull, SQS, RabbitMQ ou EventBridge | Subscription do Streaming Hub |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.