lib-streaming. Todo evento trafega no envelope compartilhado: ce-type nomeia o evento como studio.lerian.matcher.<resource>.<event>, ce-subject carrega o id do agregado, ce-tenantid o tenant proprietário, e ce-schemaversion a versão do payload. A versão é 1.0.0 para todo evento abaixo.
ce-source vem de STREAMING_CLOUDEVENTS_SOURCE, que todo deploy com streaming habilitado deve definir. Os deploys usam matcher. Com esse valor, todo evento usa o tópico de aplicação lerian.streaming.matcher e os tipos qualificados por source mostrados abaixo. Uma source configurada diferente muda os dois. O tipo de recurso, o tipo de evento e a versão do schema permanecem nos headers do CloudEvents. Valores monetários (valores de tarifa e valores de ajuste) trafegam no wire como strings decimais, nunca como floats. O Matcher expõe seu catálogo completo de eventos em GET /system/matcher/streaming/manifest.
Esta página cobre o plano de streaming Kafka. O despacho de webhook de exceção do Matcher (callbacks HTTP para roteamento de exceções) é uma superfície separada, documentada em Webhooks e callbacks.
Políticas de entrega
O catálogo do Matcher usa duas políticas de entrega: 16 definições CRITICAL usam a política apoiada em outbox e 30 definições IMPORTANT usam entrega direta com fallback de circuit-open.- Eventos apoiados em outbox vão para o outbox na mesma transação de banco de dados que a mudança de estado. Um relay publica as linhas commitadas e faz novas tentativas durante interrupções do broker. Esses são os fatos de nível de auditoria (resultados de correspondência, resoluções de exceção, disputas, governança). Um deploy não pode enfraquecer essa política.
- Eventos diretos são publicados depois que a transação faz commit, em regime de melhor esforço, com fallback para o outbox apenas quando o circuit está aberto. Esses são sinais de configuração e de ciclo de vida operacional.
Eventos de correspondência
Apoiados em outbox:transaction.matched, transaction.pending_review. Diretos: os demais.
Eventos de exceção e disputa
Apoiados em outbox, excetoexception.assigned e os eventos de comentário, que são diretos.
Eventos de configuração e entrada de dados
Todos diretos.Eventos de governança e relatórios
Apoiados em outbox, exceto a família export-job, que é direta.Contratos de payload
Esses tipos espelham os objetosdata do CloudEvent emitidos em matcher@e3902325. ? significa que a propriedade pode estar ausente. Os timestamps são UTC RFC 3339 com precisão de nanossegundos. Os aliases de UUID documentam identidade semântica. Um campo tipado como string não carrega garantia de UUID. stats é um mapa de inteiros aberto, então os consumidores devem tolerar novas chaves.
ingestion.completed inclui o intervalo de datas apenas quando o pipeline o calcula. Os timestamps terminais e os códigos de erro estáveis dependem do agregado persistido. Os contadores de exportação ficam ausentes enquanto forem zero. dispute.won e dispute.lost não repetem a category enviada por dispute.opened.
Declaradas, mas ainda não emitidas
O catálogo e o manifesto declaram 46 definições, mas o código de produção emite 39. Estas sete definições não têm nenhum chamador fora de testes:
Não construa consumidores que dependam de receber essas definições até que o Matcher adicione e conecte emissores de produção.
Eventos consumidos
O Matcher não consome nenhum evento de streaming do Kafka. Suas entradas de integração chegam via HTTP: envios de arquivo, extrações do Discovery e, quando habilitado, entregas de webhook do Streaming Hub. Essas entregas chegam emPOST /v1/discovery/hub/events (assinadas com HMAC, deduplicadas por id de evento, desabilitadas por padrão).
