我正在尝试使用 Java 程序导入 kafka 类,但找不到需要导入的 Java 类,例如:
import kafka.message.Message;
import kafka.utils.Utils;
谁能告诉我在哪里可以找到这些 Java 类以及如何提供它们?在我看来,Kafka 是用 Scala 编写的,所以在下载其源代码后我找不到那些 java 类。
我正在尝试使用 Java 程序导入 kafka 类,但找不到需要导入的 Java 类,例如:
import kafka.message.Message;
import kafka.utils.Utils;
谁能告诉我在哪里可以找到这些 Java 类以及如何提供它们?在我看来,Kafka 是用 Scala 编写的,所以在下载其源代码后我找不到那些 java 类。
如果您还没有这样做,您首先需要构建 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 更新解决。
你需要的 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 类。