CostBatch no banco de dados e reporta o uso agregado ao billing meter externo (ex.: Stripe Billing Meters). Isso fecha o ciclo do faturamento baseado em uso — desde os eventos brutos de custo até o provedor de pagamento.
O processador opera com concorrência controlada (5 workers paralelos, buffer de 50) para balancear throughput contra rate limits de APIs externas.
Agendamento: A cada 15-30 minutos, após o dispatcher. O processador usa operações atômicas
HGETDEL no Redis para garantir que cada janela de custo seja processada exatamente uma vez — mesmo se duas instâncias do processador executarem simultaneamente.Objetivo
O processador lê janelas de custo despachadas do cache, cria um registroCostBatch, reporta o uso agregado ao billing meter e vincula a referência externa de volta ao lote. Este é o passo final no pipeline de faturamento baseado em uso.
Fluxo
Escanear chaves do cache
Listar todas as chaves que correspondem a
cost_batch_window_ref:* e filtrar aquelas que terminam com um UUID válido (ignorando chaves de controle).Ler e deletar do cache
Para cada chave, ler atomicamente o hash (
quantity, amount) e deletá-lo junto com sua chave de controle via HGETDEL. Isso previne processamento duplicado.Parsear referência da janela
A chave do cache codifica
organizationId, customerExternalRef, customerCurrency e eventName. O valor do hash fornece o quantity e amount agregados.Criar CostBatch
Dentro de uma transação, criar um registro
CostBatch com um identificador determinístico (hash SHA-256 do windowRef).Reportar ao billing meter
Enviar o uso agregado ao billing meter, passando a referência do cliente, nome do evento, identificador e valor.