Quando um produtor Kafka chama send(), a maioria das bibliotecas cliente retorna um callback ou um future. Se o callback for bem-sucedido ou o Future for concluído sem exceção, a mensagem foi enviada.
Verifique a entrega no código do produtor
Inspecione o resultado retornado por send() para confirmar a entrega. O exemplo Java a seguir usa um Callback para verificar se o broker confirmou a gravação:
producer.send(new ProducerRecord<>(topic, key, value), (metadata, exception) -> {
if (exception != null) {
// Send failed -- log the error and handle the retry
exception.printStackTrace();
} else {
// Send succeeded -- metadata contains the target partition and offset
System.out.printf("Message delivered: topic=%s, partition=%d, offset=%d%n",
metadata.topic(), metadata.partition(), metadata.offset());
}
});
Um callback bem-sucedido confirma que o broker reconheceu a gravação. A garantia exata depende da configuração acks do produtor:
|
**Valor de |
Significado de callback bem-sucedido |
|
|
A mensagem foi enviada pela rede. O broker não confirmou o recebimento. |
|
|
O líder da partição gravou a mensagem em seu log local. |
|
|
O líder da partição e todas as réplicas sincronizadas reconheceram a mensagem. Esta é a garantia de durabilidade mais forte. |
Comacks=0, um callback bem-sucedido não garante que o broker recebeu a mensagem. Para cargas de trabalho em produção, mantenha o padrãoacks=allpara obter a garantia de durabilidade mais forte.
Verifique a entrega no console do ApsaraMQ for Kafka
Use também os métodos a seguir para verificar se uma mensagem foi enviada conforme esperado no console do ApsaraMQ for Kafka:
Verifique o status da partição — Abra a página Topic Details e acesse a aba Partition Status. Essa aba exibe o número de mensagens em cada partição em tempo real. Um aumento na contagem de mensagens confirma que o produtor está gravando no tópico. Para mais detalhes, consulte Visualizar status da partição.
Analise os gráficos de tráfego — Na mesma página Topic Details, acesse a aba CloudMonitor. Os gráficos de tráfego exibem o throughput em intervalos de um minuto. Um aumento visível após iniciar o produtor confirma que as mensagens estão chegando ao broker.