当前位置: 首页 > 知识库问答 >
问题:

Kafka consumer不能从eclipse中工作

雍兴修
2023-03-14

Kafka 0.8.2.2.3和zookeper都运行在VM中。我能够分别使用kafka-console-producer.sh和kafka-console-conducer.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)

下面是我的Kafka消费代码

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(); 
    }
}

我不确定为什么我不能使用来自java代码的消息。Kafka运行在端口6667上,zookeeper运行在端口2181上。

共有1个答案

尉迟轶
2023-03-14
  • 请检查zookeeper是否绑定(netstat-lntp)到0.0.0.0或只绑定到localhost(然后它将只接受来自vm本身的连接),这是一个相当新的选项(clientPortBindAddress,检查是否指定了它,默认情况下,如果没有指定它,它绑定到所有地址)
  • 它可能连接到您的vm配置。例如,在我使用Vagrant+Virtual box的情况下,我使用config.vm.network:private_network,ip:192.168.1.12
  • 在主机和客户机之间创建专用网络
  • 另外-检查您的使用者主服务器是否未抛出某个异常,它可能已连接,并将提供一些附加信息(您正在将异常抛出到当前的最高级别)
 类似资料:
  • 我没有在Eclipse中获得javadoc(我想它被称为)弹出窗口,该弹出窗口提供了关于我当前悬停的Java/Android方法的详细信息。例如,如果我键入并点击Ctrl+Space,通常会出现一个弹出窗口,显示关于log.d方法的一些信息。这不会发生的。你有什么办法修好它吗?我最近升级到JDK1.7.0_06,我认为Java文档不知何故被冒烟了。我在S.O.上跟踪了几个不同的线索。试图修复它,但

  • 我确实启用了“Run SonarLint Automatic”(选中了),并且我还尝试通过右键单击文件>SonarLint>analyze来手动分析app.java文件。 我在代码或“Sonarlint on-the-fly”选项卡中没有看到下划线的问题。我一定是在什么地方漏掉了一步。谁能给我一些技巧,如何让自动SonarLint问题检测在Eclipse中工作? 谢谢!

  • 我最近升级到了优胜美地,我的maven停止了工作。我想这是因为我的环境变量没有设置,所以我按照这篇文章创建了一个environment.plist文件。 通过launchd.conf设置环境变量在OS X Yosemite/El Capitan/MacOS Sierra中不再有效? 但是我仍然在for Maven中找不到命令,并且由于某种原因没有设置$PATH,其他的则设置了 mac-r4498:

  • 我们正在使用eclipse开普勒服务发布2,Tomcat 7.0.64,JDk1.7。我们以前使用的是流口水5.4.0,现在我们已经升级了流口水6.2.0。作为升级的一部分,我们在构建路径和Web应用程序库文件夹中添加了以下文件。 1.drools-compiler-6.2.0。期末考试-红帽-4。罐子 2。drools-core-6.2.0。期末考试-红帽-4。罐子 3。ecj-4.3.1。罐子

  • 我正试图将eclipse中的java项目导出为可运行的jar,但由于某种原因,可运行的jar无法工作。如果双击可执行jar,它什么也不做。我尝试将所需库提取并打包到生成的JAR中。 所以我也尝试导出一些更简单的项目,那些工作很好。最大的区别是我的真实项目有文件:图像和xml文件。 在代码中引用它们,如下所示:

  • 当我创建RoboVM Eclipse项目时,Eclipse给了我一个例外: 同样,当我尝试转到“设置”>“RoboVM”时,我也会得到这样的消息: