Junior — Middle
Como pode determinar-se o facto de uma mensagem ter sido lida no Kafka?
sobes.tech IA
Resposta da IA
No Kafka, o facto de uma mensagem ter sido lida é determinado por deslocamentos (offsets) nas partições do tópico. Cada consumidor (consumer) acompanha até qual deslocamento leu em cada partição.
Para determinar que uma mensagem foi lida, é necessário:
- Garantir que o consumidor processou com sucesso a mensagem.
- Confirmar (commit) o deslocamento dessa mensagem no Kafka, ou seja, informar ao broker que todas as mensagens até esse deslocamento foram processadas.
Em Go, usando um cliente Kafka (por exemplo, sarama ou confluent-kafka-go), é possível fazer commit explícito dos deslocamentos após o processamento das mensagens. Se o deslocamento for confirmado, a mensagem é considerada lida e não será entregue novamente a esse consumidor.
Exemplo com sarama (simplificado):
consumer.MarkMessage(msg, "") // Marcar a mensagem como lida
consumer.CommitOffsets() // Confirmar os deslocamentos
Assim, o fato de a mensagem ter sido lida é um commit bem-sucedido do deslocamento no Kafka.