无法远程连接kafka写producer

阿宅 发表于: 2018-01-30   最后更新时间: 2018-01-30  
  •   21 订阅,111 游览

我是初学者,今天刚跟着网络视频学习配置。
配置了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地址了。

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







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

评论…


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