无法远程连接kafka写producer

我是初学者,今天刚跟着网络视频学习配置。
配置了3台虚拟机,ip地址分别为xx.xx.xx.145,xx.xx.xx.146,xx.xx.xx.147,然后我在windows上用eclipse写java代码
跟着视频写的java代码如下:

package com.bigdata.kafka;

import java.util.Properties;

import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;

public class ProducerTest {

    private final Producer<String,String> producer;
    public final static String TOPIC="test";


    private ProducerTest() {
        Properties props=new Properties();
        //存放kafkaip地址和端口
        props.put("metadata.broker.list", "xx.xx.xx.145:9092");
        //配置value的序列化类
        props.put("serializer.class","kafka.serializer.StringEncoder");
        //配置key的序列化类
        props.put("key.serializer.class", "kafka.serializer.StringEncoder");

        /*
         * 0:意味着生产者不等待来自broker同步完成的确认,继续发送下一条数据
         * 1:producer在leader成功收到数据并确认后发送下一条message
         * -1:意味着producer在follower副本确认收到数据后才算是一次完成
         */

        props.put("request.required.acks", "-1");

        producer=new Producer<String,String>(new ProducerConfig(props));
    }

    void produce() {
        int messageNo=1;
        final int COUNT=10;

        while(messageNo<COUNT) {
            String key=String.valueOf(messageNo);
            String data="hello kafka message"+key;

            producer.send(new KeyedMessage<String,String>(TOPIC,key,data));
            System.out.println(data);
            messageNo++;
        }
    }


    public static void main(String[] args) {
        // TODO Auto-generated method stub

        new ProducerTest().produce();
    }

}

报错如下:

Exception in thread "main" kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
    at kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:90)
    at kafka.producer.Producer.send(Producer.scala:77)
    at kafka.javaapi.producer.Producer.send(Producer.scala:33)
    at com.bigdata.kafka.ProducerTest.produce(ProducerTest.java:43)
    at com.bigdata.kafka.ProducerTest.main(ProducerTest.java:53)

如果我在虚拟机上,用其中一台作为producer,剩下两台作为consumer,是没有问题的,可以正常运行。但用eclipse连接就不行。防火墙我也关掉了。

关于server.properties的配置,我在xx.xx.xx.145机子上配置了host.name=该机ip地址了。

搞了大半天了还没搞定,心累。







发表于: 7月前   最后更新时间: 6月前   游览量:1156
上一条: kafka单条消息3.22M,按照网上的解答修改了broker的配置,但还是发不出去,也不报错
下一条: kafka 在异常断开某一台服务器,会导致重复消费

评论…


  • 请问一下,你看的是什么教程?
    已解决.....
    是advertised host name 没配置的问题...用的是0.9版的kafka,查了下,没配置advertised host name的话并不像备注里说的那样会用host.name的值....
  • 评论…
    • in this conversation