Kafka Streams
Kafka Streams é a camada de processamento do KafkaPay. A aplicação lê tópicos, executa uma topologia DSL e escreve resultados de volta no Kafka. O laboratório usa Kafka Streams 4.3.1, Java 21, Avro e Schema Registry em http://localhost:8082.
Topology
Uma topologia é um grafo de sources, processors, state stores e sinks. O Topology#describe() foi impresso no startup para que os nomes e tópicos internos fossem verificáveis. Os nomes explícitos reduzem ambiguidade durante incidentes.
payment.created
|
v
Deserialize Avro → validate → normalize
| |
v v
payment.validated payment.rejected
Application ID, tasks e group
application.id é simultaneamente a identidade lógica da aplicação, o consumer group e o prefixo dos recursos internos. Tasks são atribuídas por partition. Duas instâncias com o mesmo ID partilham as tasks; IDs diferentes criariam aplicações independentes e consumiriam o mesmo input separadamente.
Escala e failover
Com seis partitions, duas instâncias receberam assignments distintos. Quando uma JVM foi terminada abruptamente, o group fez rebalance e a instância sobrevivente assumiu as partitions. O backlog publicado sem membros foi consumido após o restart a partir dos offsets confirmados.
Limites
Streams coordena processamento, offsets e estado Kafka. Não torna side effects externos idempotentes por si só. ALO pode reaplicar processamento; EOS V2 controla a visibilidade de transações Kafka, mas não substitui deduplicação de domínio.