5

我正在尝试使用 Java 程序导入 kafka 类,但找不到需要导入的 Java 类,例如:

import kafka.message.Message;
import kafka.utils.Utils;

谁能告诉我在哪里可以找到这些 Java 类以及如何提供它们?在我看来,Kafka 是用 Scala 编写的,所以在下载其源代码后我找不到那些 java 类。

4

2 回答 2

6

如果您还没有这样做,您首先需要构建 Kafka 版本:


`tar xzf kafka-[VERSION].tgz`
`cd kafka-[VERSION]`
`./sbt update`
`./sbt package`

然后,最简单的做法是将生成的 kafka-[VERSION].jar(在 kafka-0.7.2-incubating-src/core/target/scala_2.8.0/ 中)和其他需要的依赖项放在构建路径上,然后它应该工作。

所有依赖项(在 kafka-[VERSION]-incubating-src/core/lib_managed/scala_2.8.0/compile/ 中)都通过 sbt 更新解决。

您可以按照http://kafka.apache.org/07/quickstart.html上的步骤进行操作

于 2012-12-14T23:25:37.900 回答
2

在 Ubuntu 上使用 apache kafka jar 的最小 Java 程序示例:

你需要的 jars 应该在你的 kafka 安装的 libs 目录中。将它们复制到您的 java 程序可以访问它们的位置。

对于新手来说,一个演练。把它放在一个名为 Main.java 的文件中:

import java.util.*;
import kafka.producer.*;
import kafka.utils.*;

public class Main{
   public static void main(String[] args) {
       Properties props = new Properties();
       props.put("metadata.broker.list", "broker1:9092,broker2:9092");
       props.put("serializer.class", "kafka.serializer.StringEncoder");
       props.put("partitioner.class", "example.producer.SimplePartitioner");
       props.put("request.required.acks", "1");
       ProducerConfig config = new ProducerConfig(props);
       System.out.println("k");
   }
}

假设你正确安装了 apache kafka,那么在你的 kafka 安装目录下你会找到一个libs目录。在里面你会发现一堆jar文件。

我感兴趣的 3 个罐子是:

kafka_2.10-0.8.1.1.jar
scala-library-2.10.1.jar
log4j-1.2.15.jar

将这些 jar 复制到 Main.java 文件旁边。

编译它:

javac -cp .:kafka_2.10-0.8.1.1.jar:scala-library-2.10.1.jar:log4j-1.2.15.jar Main.java

运行:

el@apollo:~$ java -cp .:kafka_2.10-0.8.1.1.jar:scala-library-2.10.1.jar:log4j-1.2.15.jar Main
k
el@apollo:~$ 

笔记:

该程序不会抱怨缺少 kafka.producer 类。这意味着您正确导入了 kafka 类。

于 2014-08-21T21:02:08.607 回答