Задержка и отладка подтверждения производителя Kafka - PullRequest
0 голосов
/ 01 июня 2018

Когда производитель Kafka вызывает метод send (), он возвращает будущее RecordMetadata, которое содержит

 public RecordMetadata(TopicPartition topicPartition,
          long baseOffset,
          long relativeOffset,
          long timestamp,
          java.lang.Long checksum,
          int serializedKeySize,
          int serializedValueSize)  

Это содержит метку времени записи в теме / разделе, но есть способ узнать метку времениподтверждение отправлено брокером.

Я заметил задержку в получении подтверждения и хотел бы продолжить отладку, чтобы понять причину этой задержки.Есть ли в брокере Kafka уровень журнала, который позволяет печатать информацию подтверждения в журналах сервера?

1 Ответ

0 голосов
/ 01 июня 2018

Я нашел уровень журнала TRACE в Apache Kafka и Spring Kafka.Это может быть то, что вы ищете.

org.springframework.kafka.core.KafkaTemplate
protected ListenableFuture<SendResult<K, V>> doSend(final ProducerRecord<K, V> producerRecord) {
    final Producer<K, V> producer = getTheProducer();
    if (this.logger.isTraceEnabled()) {
        this.logger.trace("Sending: " + producerRecord);
    }
    ...
producer.send(producerRecord, new Callback() {

        @Override
        public void onCompletion(RecordMetadata metadata, Exception exception) {
        ...
        if (KafkaTemplate.this.logger.isTraceEnabled()) {
                        KafkaTemplate.this.logger.trace("Sent ok: " + producerRecord + ", metadata: " + metadata);
                    }
        ...
        }
    }
    ...
}

org.apache.kafka.clients.producer.KafkaProducer
private Future<RecordMetadata> doSend(ProducerRecord<K, V> record, Callback 
callback) {
    ...
    log.trace("Sending record {} with callback {} to topic {} partition {}", 
    record, callback, record.topic(), partition);
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...