【问题标题】:Kafka producer acknowledgement time delay and debuggingKafka生产者确认时间延迟和调试
【发布时间】:2018-06-01 17:28:56
【问题描述】:

当 Kafka 生产者调用 send() 方法时,它会返回 RecordMetadata 的未来,其中包含

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

这包含主题/分区中记录的时间戳,但是有没有办法找出代理发送的确认时间戳。

我注意到确认收到延迟,并希望进一步调试以了解延迟的原因。 Kafka 代理中是否有允许在服务器日志中打印确认信息的日志级别?

【问题讨论】:

标签: apache-kafka


【解决方案1】:

我在 Apache Kafka 和 Spring Kafka 中都发现了 TRACE 日志级别。会不会是你要找的东西。

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);
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多