Skip to main content
O Tracer emite seus fatos de negócio JSON públicos como CloudEvents 1.0 no modo de conteúdo binário pelo Kafka. O Tracer é o componente do Midaz com deploy separado e o único produtor do contrato studio.lerian.tracer.* desta página.

Envelope do CloudEvents

Todo fato JSON público usa o envelope compartilhado abaixo. Os headers carregam informações de roteamento e schema. O valor do Kafka carrega o objeto JSON data.

Tópicos, manifesto e roteamento

O tópico da aplicação identifica o Midaz Tracer, não um evento individual. Roteie um registro por ce-resourcetype e ce-eventtype, e valide ce-schemaversion antes de decodificar seu valor data.
  • Fatos: lerian.streaming.tracer
  • Rota DLQ: lerian.streaming.tracer.dlq
  • Manifesto: GET /v1/streaming/manifest expõe o catálogo JSON público e o mapeamento de tópicos, inclusive enquanto a publicação está desligada.

Semântica de entrega e falha

A publicação fica desabilitada até que STREAMING_ENABLED=true e a configuração do broker seja bem-sucedida. Quando habilitado, o Tracer emite depois da mudança de estado de negócio. Ele não usa um outbox transacional.
  • Política: toda definição JSON pública é um fact com entrega direta, tratamento de DLQ por on_routable_failure e fallback_on_circuit_open.
  • Limite real do Tracer: como o Tracer não tem outbox, o fallback de circuito aberto não consegue persistir um evento. Os caminhos de emissão registram em log e engolem os erros de publicação em vez de retorná-los ao comando de negócio.
  • Requisito do consumidor: a entrega do broker é pelo menos uma vez para os registros publicados. Torne os handlers idempotentes e faça deduplicação com (ce-source, ce-id).

Contratos data completos

Essas declarações no estilo TypeScript espelham as tags JSON data do CloudEvent no Midaz. Cada nome de campo é o seu nome JSON. ? significa que o campo tem omitempty. | null significa que o campo é anulável e nunca está ausente. Um comentário de tipo de origem preserva o tipo do inventário exatamente. Todos os campos nesses 12 payloads do Tracer estão presentes (omitempty: false). Campos anuláveis ainda carregam null quando ausentes.
Chave de definição: limit.activated (LimitActivatedDefinition)Evento: studio.lerian.tracer.limit.activatedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: ActivateLimitCommand ativa um limite com sucesso.Subject: p.ID
Chave de definição: limit.created (LimitCreatedDefinition)Evento: studio.lerian.tracer.limit.createdTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.1.0 (application/json)Disparado quando: CreateLimitCommand cria um limite com sucesso.Subject: p.ID
Chave de definição: limit.deactivated (LimitDeactivatedDefinition)Evento: studio.lerian.tracer.limit.deactivatedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: DeactivateLimitCommand desativa um limite com sucesso.Subject: p.ID
Chave de definição: limit.deleted (LimitDeletedDefinition)Evento: studio.lerian.tracer.limit.deletedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: DeleteLimitCommand exclui um limite com sucesso.Subject: p.ID
Chave de definição: limit.drafted (LimitDraftedDefinition)Evento: studio.lerian.tracer.limit.draftedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: DraftLimitCommand move um limite para DRAFT com sucesso.Subject: p.ID
Chave de definição: limit.updated (LimitUpdatedDefinition)Evento: studio.lerian.tracer.limit.updatedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.1.0 (application/json)Disparado quando: UpdateLimitCommand atualiza um limite com sucesso.Subject: p.ID
Chave de definição: rule.activated (RuleActivatedDefinition)Evento: studio.lerian.tracer.rule.activatedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: ActivateRuleService ativa uma regra com sucesso.Subject: p.ID
Chave de definição: rule.created (RuleCreatedDefinition)Evento: studio.lerian.tracer.rule.createdTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: CreateRuleCommand cria uma regra com sucesso.Subject: p.ID
Chave de definição: rule.deactivated (RuleDeactivatedDefinition)Evento: studio.lerian.tracer.rule.deactivatedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: DeactivateRuleService desativa uma regra com sucesso.Subject: p.ID
Chave de definição: rule.deleted (RuleDeletedDefinition)Evento: studio.lerian.tracer.rule.deletedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: DeleteRuleService exclui uma regra com sucesso.Subject: p.ID
Chave de definição: rule.drafted (RuleDraftedDefinition)Evento: studio.lerian.tracer.rule.draftedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: DraftRuleService move uma regra para DRAFT com sucesso.Subject: p.ID
Chave de definição: rule.updated (RuleUpdatedDefinition)Evento: studio.lerian.tracer.rule.updatedTópico: lerian.streaming.tracerRota DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Disparado quando: UpdateRuleCommand atualiza uma regra com sucesso.Subject: p.ID

Índice de eventos emitidos