Java 卡夫卡没有收到卡夫卡的任何东西
我正试图建立一个卡夫卡风暴“你好世界”系统。我已经安装并运行了Kafka,当我使用Kafka producer发送数据时,我可以使用Kafka console consumer读取数据 我从O'Reilly的《风暴入门》一书中选取了第二章的例子,并将其修改为使用卡夫卡斯库特(KafkaSpout)而不是普通的喷口 当我运行应用程序时,kafka中的数据已经挂起,KafkaSpout的下一个线程不会收到任何消息——它进入,尝试在协调器下的空管理器列表上迭代,然后退出 我的环境是一个相当旧的Cloudera虚拟机,有Storm 0.9和Kafka-Storm-0.9(最新版本)以及Kafka 2.9.2-0.7.0 这是我如何定义SpoutConfig和拓扑的:Java 卡夫卡没有收到卡夫卡的任何东西,java,linux,apache-storm,apache-zookeeper,Java,Linux,Apache Storm,Apache Zookeeper,我正试图建立一个卡夫卡风暴“你好世界”系统。我已经安装并运行了Kafka,当我使用Kafka producer发送数据时,我可以使用Kafka console consumer读取数据 我从O'Reilly的《风暴入门》一书中选取了第二章的例子,并将其修改为使用卡夫卡斯库特(KafkaSpout)而不是普通的喷口 当我运行应用程序时,kafka中的数据已经挂起,KafkaSpout的下一个线程不会收到任何消息——它进入,尝试在协调器下的空管理器列表上迭代,然后退出 我的环境是一个相当旧的Clou
String zookeepers = "localhost:2181";
SpoutConfig spoutConfig = new SpoutConfig(new SpoutConfig.ZkHosts(zookeepers, "/brokers"),
"gtest",
"/kafka", // zookeeper root path for offset storing
"KafkaSpout");
spoutConfig.forceStartOffsetTime(-1);
KafkaSpoutTester kafkaSpout = new KafkaSpoutTester(spoutConfig);
//Topology definition
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("word-reader", kafkaSpout, 1);
builder.setBolt("word-normalizer", new WordNormalizer())
.shuffleGrouping("word-reader");
builder.setBolt("word-counter", new WordCounter(),1)
.fieldsGrouping("word-normalizer", new Fields("word"));
//Configuration
Config conf = new Config();
conf.put("wordsFile", args[0]);
conf.setDebug(false);
//Topology run
conf.put(Config.TOPOLOGY_MAX_SPOUT_PENDING, 1);
cluster = new LocalCluster();
cluster.submitTopology("Getting-Started-Toplogie", conf, builder.createTopology());
有人能帮我弄清楚为什么我没有收到任何东西吗
谢谢,
G
您正在使用“gtest”主题来接收数据。确保制作人正在发送此主题的数据
在螺栓中,像那样打印元组
public void execute(Tuple tuple, BasicOutputCollector collector) {
System.out.println(tuple);
}
它应该在卡夫卡中打印挂起的数据。如果您已经使用了该消息,则不应再读取该消息,除非您的制作人生成新消息。这是因为在代码中使用
-1
调用了forceStartOffsetTime
格式文件:
喷口中另一个非常有用的配置是强制喷口倒带到上一个偏移的能力。在喷口配置上执行forceStartOffsetTime,如下所示:
它将选择围绕该时间戳写入的最新偏移量开始使用。可以通过传入-1强制喷口始终从最新偏移开始,也可以通过传入-2强制喷口从最早偏移开始
你看起来怎么样?有一个片段会很有用。你可以用-2替换-1,看看你是否收到任何东西,如果你的制作人没事,那么你应该可以消费。我经历了一些悲伤,将《暴风雨》和《卡夫卡》整合在一起。这些都是快速发展且相对年轻的项目,因此很难找到工作示例来启动您的开发 为了帮助其他开发人员(并希望让其他人提供有用的示例,我也可以使用这些示例),我启动了一个github项目来存放与Storm/Kafka(和Esper)开发相关的代码片段 欢迎您在此查看> (单击storm+kafka目录中的示例程序,该程序将帮助您启动并运行)
public void execute(Tuple tuple, BasicOutputCollector collector) {
System.out.println(tuple);
}
spoutConfig.forceStartOffsetTime(-2);
SpoutConfig spoutConf = new SpoutConfig(...)
spoutConf.startOffsetTime = kafka.api.OffsetRequest.LatestTime();