Я использую Kafka Java API v2.1.Я хочу знать, какие исключения будут распространяться на код клиентского приложения из базового API
Это мой полученный код обратного вызова для отправки вызова:
@Override
public void onCompletion(RecordMetadata metadata, Exception e) {
if (e == null) {
if (LOG.isLoggable(Level.FINEST)) {
LOG.finest("Sent message " + mySentRecord
+ " with offset " + metadata.offset()
+ " on topic:partition "
+ metadata.topic() + ":" + metadata.partition());
}
}
else {
try {
throw e;
}
catch (NotEnoughReplicasAfterAppendException |
NotEnoughReplicasException |
TimeoutException exception )
{
StringWriter outError = new StringWriter();
e.printStackTrace(new PrintWriter(outError));
LOG.warning(outError.toString());
}
catch (Exception exception) {
throw new ApplicationDeath(exception);
}
}
}
Здесь я ловлю NotEnoughReplicasAfterAppendException, NotEnoughReplicasException и TimeoutException, но я никогда не вижу ничего, кроме исключений тайм-аута, когда я убиваю брокеров в ISR.Я не вижу никаких исключений при отключении или недостаточно реплик-исключений.
Я знаю, что Kafka API будет повторять попытки внутренних подключений, но я хочу получать уведомления о таких попытках в коде приложения.Аналогично, я не вижу таких исключений в коде потребителя, кроме таймаутов метаданных.
Как я могу добиться этого и получать уведомления о любых разрывах соединения, недостаточном количестве реплик и т. Д.?Какие еще исключения я должен ловить и обрабатывать здесь?
Спасибо, Абхи