Skip to main content
Midaz emite CloudEvents para hechos de negocio del ledger, CRM, Fees y Tracer. El contrato completo actual es la superficie de Kafka/lib-streaming. Los exchanges heredados de RabbitMQ llevan solo un subconjunto de compatibilidad.

Superficie actual de eventos — Kafka


Habilita la publicación en cada servicio productor:
STREAMING_CLOUDEVENTS_SOURCE es obligatorio cuando el streaming está habilitado. Usa ledger para el binario del ledger, CRM y Fees, y tracer para Tracer; cada servicio rechaza cualquier otro valor al arrancar. Midaz usa un tópico de hechos por aplicación v3 para cada servicio productor:
  • Ledger, CRM y Fees: lerian.streaming.ledger
  • Tracer: lerian.streaming.tracer
Ejemplos:
  • organization.created viaja en lerian.streaming.ledger
  • transaction.posted viaja en lerian.streaming.ledger
  • fee_charge.applied viaja en lerian.streaming.ledger
  • rule.created viaja en lerian.streaming.tracer
El tipo CloudEvents está calificado por la fuente: studio.lerian.<source>.<resource>.<event>. ce-resourcetype y ce-eventtype llevan la clave de dispatch en headers separados. El esquema del payload es 1.0.0 para el catálogo actual. El ledger y Tracer sirven su catálogo exacto y el mapeo de tópicos en:
La ruta permanece disponible aunque la publicación esté deshabilitada. Úsala como contrato del despliegue en lugar de adivinar tópicos. La referencia de eventos de Midaz y la referencia de eventos de Tracer listan cada evento y payload.

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, y los fallos de publicación se registran en logs en lugar de devolverse al comando de negocio. Tus consumidores deben seguir siendo idempotentes y deduplicar por (ce-source, ce-id) porque el broker puede repetir un registro publicado. Los valores monetarios usan cadenas decimales; nunca los analices como números binarios de punto flotante.

Lista de verificación del consumidor

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

Superficie heredada de RabbitMQ


Midaz también mantiene exchanges heredados de RabbitMQ para determinados eventos de transacción, sobregiro y auditoría. Esta no es la totalidad del catálogo de lib-streaming. La configuración de ejemplo incluye esos exchanges de salida deshabilitados. Si los habilitas, tú gestionas los bindings de cola, ack/nack, dead-lettering, reintentos y aislamiento de consumidores. El pipeline interno asíncrono de operaciones de saldo controlado por RABBITMQ_TRANSACTION_ASYNC no es un feed público de eventos. Usa la superficie de Kafka para integraciones nuevas, salvo que dependas explícitamente de un contrato heredado de RabbitMQ.

Compatibilidad con Streaming Hub


Streaming Hub sigue los tópicos de aplicación v3 de Midaz lerian.streaming.ledger y lerian.streaming.tracer. Por ello, una suscripción puede recibir hechos de Midaz cuando el productor, la ingesta del hub y el runtime del destino están habilitados. Haz el match con la clave del evento de ce-resourcetype y ce-eventtype; no esperes un tópico Kafka por evento.

Decisión