Skip to main content
O Midaz emite CloudEvents para fatos de negócio do ledger, CRM, Fees e Tracer. O contrato público de integração atual é a superfície Kafka/lib-streaming. O antigo stream interno de faturamento foi desativado. 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:
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 tenant ID resolvido no escopo multi-tenant, e o literal default no escopo single-tenant ou sem tenant. O schema do payload é 1.0.0 para o catálogo atual. 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:
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 e a referência de eventos do Tracer 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 lib-streaming. A configuração de exemplo empacotada envia esses exchanges de saída desabilitados. Se você os habilitar, 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