什么异常传播到客户端应用程序代码中的卡夫卡API

问题描述 投票:0回答:1

我使用卡夫卡的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杀经纪人。我看不出有任何异常断开或没有足够的副本例外。

我知道,卡夫卡API将内部重试连接,但我希望得到通知在应用程序代码这样的尝试。与之相似,我没有看到消费者代码中的任何这样的例外,除了元超时。

我怎样才能做到这一点,并收到通知的任何连接中断,没有足够的副本等等?其他什么异常,我应该是捕捉和处理在这里?

谢谢,现在

java apache-kafka kafka-consumer-api kafka-producer-api
1个回答
1
投票

首先,从来没有throw e并抓住它。

相反,检查if (e instanceof ExceptionClass)


这些都是上市in the JavaDoc

在这里重新格式化为可读性。

Non-Retriable exceptions (fatal, the message will never be sent):

  • InvalidTopicException
  • OffsetMetadataTooLargeException
  • RecordBatchTooLargeException
  • RecordTooLargeException
  • UnknownServerException

Retriable exceptions (transient, may be covered by increasing #.retries):

  • CorruptRecordException
  • InvalidMetadataException
  • NotEnoughReplicasAfterAppendException
  • NotEnoughReplicasException
  • OffsetOutOfRangeException
  • TimeoutException异常
  • UnknownTopicOrPartitionException
© www.soinside.com 2019 - 2024. All rights reserved.