Pular para o conteúdo principal

Por que isso importa


A publicação de eventos permite que seus sistemas reajam às transações no momento em que acontecem — dispare notificações para clientes, sincronize seu ERP, alimente dashboards de analytics ou inicie workflows de conformidade. Tudo isso sem criar acoplamento rígido entre seus sistemas. As seções abaixo cobrem a configuração técnica. Para uma visão geral orientada a negócios, veja Sobre o Midaz.

Habilitando eventos de transação


A publicação de eventos de transação está habilitada por padrão — o Midaz trata a variável como habilitada, a menos que você a defina explicitamente como false. A configuração de exemplo incluída a define como false, portanto, em um stack iniciado a partir desse exemplo, garanta que a variável não esteja como false (ou defina-a como true) na aplicação de transação:
Com a variável habilitada, o Midaz publica eventos no seguinte exchange do RabbitMQ:

Tipos de evento


O Midaz emite um dos seguintes tipos de evento dependendo do ciclo de vida da transação:
AçãoDescrição
APPROVEDA transação foi concluída com sucesso. Isso inclui transações de etapa única e transações de duas fases que foram confirmadas (committed).
PENDINGUma transação de duas fases foi criada e está aguardando confirmação (commit) ou cancelamento.
CANCELEDUma transação de duas fases foi cancelada antes da confirmação.
CREATEDUma transação de reversão foi iniciada. Esse é um status transitório que progride para APPROVED assim que o processamento é concluído.
NOTEDUma transação de anotação foi registrada. A transação é registrada no ledger sem afetar os saldos das contas.

Exemplo de payload de evento


O payload completo inclui timestamps, snapshots de saldo e outros identificadores usados para auditoria e rastreabilidade.

Modelo de roteamento de eventos


Para garantir flexibilidade e escalabilidade, o Midaz usa um topic exchange para publicar mensagens em vez de enviá-las diretamente para filas específicas. Isso significa que você controla quais eventos receber configurando seus próprios bindings.

Como o roteamento funciona

Cada evento publicado pelo Midaz é marcado com uma routingKey usando o formato:
Onde <status> corresponde ao status atual da transação (APPROVED, PENDING, CANCELED, CREATED ou NOTED). Para consumir eventos, sua aplicação deve:
1
Criar uma fila no RabbitMQ.
2
Vincular sua fila ao exchange do Midaz usando o padrão de routingKey que corresponde ao seu interesse.

Visão geral visual

Modelo de roteamento de eventos do Midaz, mostrando como os eventos publicados chegam às filas de assinantes vinculadas ao exchange por padrões de routing key
Você pode configurar múltiplas filas com diferentes bindings para atender equipes ou serviços específicos de forma independente.

Exemplo de fila e binding


Criando uma nova fila

Vinculando a fila para receber todos os eventos

O wildcard * corresponde aos cinco status: APPROVED, PENDING, CANCELED, CREATED e NOTED. Para assinar apenas eventos específicos, substitua o wildcard pelo status exato — por exemplo, midaz.transaction.NOTED para receber apenas eventos de anotação.
O Midaz não gerencia nem cria filas do RabbitMQ para você. Você é responsável por provisionar as filas e configurar os bindings corretos.