Kafka : KafkaProducer Closing the kafka producer with timeoutMillis

1.美图

2.背景

一段kafka写入程序,不晓得为啥突然发现很多奇怪的日志。
kafka 多线程发送数据,然后在本地是可以的,在服务器上是偶现的


我写了一个本地程序多线程生产数据,发现是没有问题的。

@Test
    public void multiThreadProducer() throws InterruptedException {

        Properties prop = new Properties();
        prop.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        prop.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.IntegerSerializer");
        prop.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");


        int i = 0;
        while (i < 20) {
            new Thread(new Runnable() {

                @Override
                public void run() {
                    KafkaProducer<Integer, String> producer = new KafkaProducer<Integer, String>(prop);
                    Integer messageNo = 1;
                    while (true) {
                        String messageStr = "Message_" + messageNo;
                        RecordMetadata result = null;
                        try {
                            result = producer.send(new ProducerRecord<Integer, String>("topic_lcc", messageNo, messageStr)).get();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        } catch (ExecutionException e) {
                            e.printStackTrace();
                        }
                        System.out.println("发送消息" + result);
                        ++messageNo;
                    }
                }
            }, "thread" + i).start();
            i++;
        }

        Thread.sleep(Integer.MAX_VALUE);

    }

猜测是Host连接问题:参考添加链接描述
但是,我们是采用Ip直接访问的,应该也不是这个错误,并且telnet zk和kafka的地址端口,都是通畅的。

你可能感兴趣的:(临时栏目)