Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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 zookeeper Kafka consumer不能从eclipse工作_Apache Zookeeper_Apache Kafka - Fatal编程技术网

Apache zookeeper Kafka consumer不能从eclipse工作

Apache zookeeper Kafka consumer不能从eclipse工作,apache-zookeeper,apache-kafka,Apache Zookeeper,Apache Kafka,Kafka 0.8.2.2.3和zookeper都在VM中运行。我能够分别使用kafka-console-producer.sh和kafka-console-consumer.sh在VM中成功地运行producer和consumer。甚至我也能够使用Kafka-console-consumer.sh从主机上使用Kafka消息。但当我试图使用eclipse中的java运行消费者时,zookeeper记录了以下错误 2015-06-26 03:06:26,323 - INFO [NIOServer

Kafka 0.8.2.2.3和zookeper都在VM中运行。我能够分别使用kafka-console-producer.sh和kafka-console-consumer.sh在VM中成功地运行producer和consumer。甚至我也能够使用Kafka-console-consumer.sh从主机上使用Kafka消息。但当我试图使用eclipse中的java运行消费者时,zookeeper记录了以下错误

2015-06-26 03:06:26,323 - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1007] - Closed socket connection for client /192.168.1.12:59549 (no session established for client)
2015-06-26 03:07:26,225 - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@197] - Accepted socket connection from /192.168.1.12:59617
2015-06-26 03:07:26,226 - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@357] - caught end of stream exception
EndOfStreamException: Unable to read additional data from client sessionid 0x0, likely client has closed socket
    at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:228)
    at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)
    at java.lang.Thread.run(Thread.java:745)
下面是我的卡夫卡消费代码

package com.truckevent.producer;


import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import kafka.consumer.Consumer;
import kafka.consumer.ConsumerConfig;
import kafka.consumer.ConsumerIterator;
import kafka.consumer.KafkaStream;
import kafka.javaapi.consumer.ConsumerConnector;


public class KafkaConsumer {

    public static void main(String[] args) throws Exception {

        String group = "hello" ;


        Properties props = new Properties();
        props.put("zookeeper.connect", "192.168.1.12:2181");
        props.put("group.id", group);
        props.put("zookeeper.session.timeout.ms", "20000");
        props.put("zookeeper.sync.time.ms", "2030");
        props.put("auto.commit.interval.ms", "10000");
        props.put("auto.offset.reset", "smallest");

        ConsumerConfig cf = new ConsumerConfig(props) ;

        ConsumerConnector consumer = Consumer.createJavaConsumerConnector(cf) ;

        String topic = "event" ;

        Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
        topicCountMap.put(topic, new Integer(1));
        Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = consumer.createMessageStreams(topicCountMap);
        List<KafkaStream<byte[], byte[]>> streams = consumerMap.get(topic);


        KafkaStream<byte[],byte[]> stream = streams.get(0) ;

        ConsumerIterator<byte[], byte[]> it = stream.iterator();
        int i = 1 ;
        while (it.hasNext()) {

            System.out.println(i + ": " + new String(it.next().message()));
            ++i;
        }
        consumer.shutdown(); 
    }
}
package com.truckevent.producer;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入java.util.Properties;
进口卡夫卡消费品;
导入kafka.consumer.ConsumerConfig;
导入kafka.consumer.ConsumerIterator;
进口kafka.consumer.KafkaStream;
导入kafka.javaapi.consumer.ConsumerConnector;
公共类卡夫卡消费者{
公共静态void main(字符串[]args)引发异常{
String group=“hello”;
Properties props=新属性();
道具放置(“zookeeper.connect”,“192.168.1.12:2181”);
道具放置(“group.id”,group);
props.put(“zookeeper.session.timeout.ms”,“20000”);
道具放置(“zookeeper.sync.time.ms”,“2030”);
props.put(“auto.commit.interval.ms”、“10000”);
道具放置(“自动偏移重置”、“最小”);
ConsumerConfig cf=新的ConsumerConfig(道具);
ConsumerConnector consumer=consumer.createJavaConsumerConnector(cf);
字符串topic=“事件”;
Map topicCountMap=新HashMap();
topicCountMap.put(主题,新整数(1));
Map consumerMap=consumer.createMessageStreams(topicCountMap);
列表流=consumerMap.get(主题);
KafkaStream stream=streams.get(0);
ConsumerIterator it=stream.iterator();
int i=1;
while(it.hasNext()){
System.out.println(i+“:”+新字符串(it.next().message());
++一,;
}
consumer.shutdown();
}
}
我不知道为什么我不能使用来自java代码的消息。 卡夫卡在6667端口运行,zookeeper在2181端口运行。

  • 请检查zookeeper是绑定(netstat-lntp)到0.0.0.0还是仅绑定到localhost(然后它将只接受来自vm本身的连接),这是一个相当新的选项(clientPortBindAddress,检查您是否指定了它,默认情况下,如果您没有指定它,它将绑定到所有地址)
  • 它可能连接到您的vm配置。例如,在我使用vagrant+virtual box的情况下,我使用config.vm.network:private_network,ip:192.168.1.12在主机和客户机之间创建专用网络
  • 此外-检查您的consumer main是否未引发某些异常,它可能已连接,并将提供一些附加信息(您正在将异常引发到当前的最高级别)

您能在这个端口上远程登录到这个IP地址吗?您找到原因了吗?我也有同样的问题。请使用PortQry检查防火墙。