Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡生产者确认时延与调试_Apache Kafka - Fatal编程技术网

Apache kafka 卡夫卡生产者确认时延与调试

Apache kafka 卡夫卡生产者确认时延与调试,apache-kafka,Apache Kafka,当Kafka producer调用send()方法时,它将返回包含 public RecordMetadata(TopicPartition topicPartition, long baseOffset, long relativeOffset, long timestamp, java.lang.Long checksum, int serializedKeySize,

当Kafka producer调用send()方法时,它将返回包含

 public RecordMetadata(TopicPartition topicPartition,
          long baseOffset,
          long relativeOffset,
          long timestamp,
          java.lang.Long checksum,
          int serializedKeySize,
          int serializedValueSize)  
这包含主题/分区中记录的时间戳,但有办法找到代理发送的确认时间戳

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

我在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);
    ...
}
org.springframework.kafka.core.KafkaTemplate
受保护的可上市未来doSend(最终产品记录产品记录){
最终生产者=getTheProducer();
if(this.logger.isTraceEnabled()){
this.logger.trace(“发送:“+producerRecord”);
}
...
producer.send(producerRecord,new Callback()){
@凌驾
公共void onCompletion(记录元数据、异常){
...
if(KafkaTemplate.this.logger.isTraceEnabled()){
KafkaTemplate.this.logger.trace(“发送确定:+producerRecord+”,元数据:+metadata);
}
...
}
}
...
}
org.apache.kafka.clients.producer.KafkaProducer
私人未来doSend(生产记录、回拨
(回拨){
...
trace(“将带有回调{}的记录{}发送到主题{}分区{}”,
记录、回调、record.topic()、分区);
...
}

您可以使用拦截器监视和跟踪消息,并了解正在发生的情况。