如何检测Kafka中的连接错误

时间:2016-07-11 13:55:32

标签: java apache-kafka

我在Java上使用KafkaProducer。这是代码示例:

package com.mypackage.kafka.producer;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;

import java.util.Properties;

public class ProducerToTest
{
    public static void main(String[] args)
    {
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("retries", 0);
        props.put("batch.size", 16384);
        props.put("linger.ms", 1);
        props.put("buffer.memory", 33554432);
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        KafkaProducer<String, String> producer = new KafkaProducer<String, String>(props);
        for (int i = 0; i < 100; i++)
        {
            System.out.println(i);
            producer.send(new ProducerRecord<String, String>("my-topic", Integer.toString(i), Integer.toString(i)));
        }

        producer.close();
    }
}

我有问题。如果我的Kafka关闭并且我运行我的代码,它会在第一次发送时停止并等待Kafka再次启动。

如何以不停止所有执行的方式检测连接错误或使用发送

1 个答案:

答案 0 :(得分:1)

制作人将尝试重新连接到request.timeout.ms。它不会无限期地等待经纪人。请参阅以下request.timeout.ms的详细信息。

配置控制客户端等待请求响应的最长时间。如果在超时之前没有收到响应,则客户端将在必要时重新发送请求,或者如果重试耗尽则请求失败。