使用Java为ApacheKafka 0.9创建主题
我正在为一个客户端编程,以便与kafka 0.9一起工作。我想知道如何创建一个主题。这个答案:与我所问的相似。除此之外,该解决方案仅适用于卡夫卡0.8.2,它与卡夫卡0.9的API有很大不同 在浏览了scala api和各种在线链接之后 这就是我找到的解决方案: Maven依赖项:使用Java为ApacheKafka 0.9创建主题,java,apache-kafka,Java,Apache Kafka,我正在为一个客户端编程,以便与kafka 0.9一起工作。我想知道如何创建一个主题。这个答案:与我所问的相似。除此之外,该解决方案仅适用于卡夫卡0.8.2,它与卡夫卡0.9的API有很大不同 在浏览了scala api和各种在线链接之后 这就是我找到的解决方案: Maven依赖项: <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.9.0.0</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.7</version>
</dependency>
如果您想知道为什么下面的代码看起来不像Java:
ZKStringSerializer$.MODULE$
这是因为ZkStringSerializer是一个Scala对象。
您可以在此处阅读更多相关信息:
注意:必须使用ZKStringSerializer初始化ZkClient。如果不这样做,则createTopic()似乎只能工作 (换句话说:它将返回而不出错)。
该主题将仅存在于Zookeeper中,并且仅在列出主题时有效。 i、 e.下面的列表命令可以正常工作
bin/kafka-topics.sh --list --zookeeper localhost:2181
但卡夫卡本身并没有创造这个话题。
为了举例说明,下面的descripe命令将抛出一个错误
bin/kafka-topics.sh --describe --zookeeper localhost:2181
因此,请确保使用ZKStringSerializer$.MODULE$对其进行初始化
参考资料:
从ide使用api
孙志龙,
我很快追随Chee Loong的回答,卡夫卡的回答是0.90.1,但必须作出改变。ZKStringSerializer现在是私有的。为了创建ZkUtils,我使用了以下API(它在内部创建了一个ZkUtils客户端):
对于Kafka 0.9及更高版本,您需要使用新的API AdminZkClient。AdminUtils API已被弃用
String zookeeperHost = "127.0.0.1:2181";
Boolean isSucre = false;
int sessionTimeoutMs = 200000;
int connectionTimeoutMs = 15000;
int maxInFlightRequests = 10;
Time time = Time.SYSTEM;
String metricGroup = "myGroup";
String metricType = "myType";
KafkaZkClient zkClient = KafkaZkClient.apply(zookeeperHost,isSucre,sessionTimeoutMs,
connectionTimeoutMs,maxInFlightRequests,time,metricGroup,metricType);
AdminZkClient adminZkClient = new AdminZkClient(zkClient);
String topicName1 = "myTopic";
int partitions = 3;
int replication = 1;
Properties topicConfig = new Properties();
adminZkClient.createTopic(topicName1,partitions,replication,
topicConfig,RackAwareMode.Disabled$.MODULE$);
您可以查看更多详细信息换句话说,您尝试了类似的解决方案,但不起作用,是吗?请描述一下你的尝试和遇到的问题。我在一家公司工作。它运行卡夫卡0.8.2。我基于链接实现了它。现在公司想升级到卡夫卡0.9。我需要一个快速的解决方案来升级我的代码到0.9。原始的链接引用不是@JayaAnanthram修复的,谢谢。我不知道原来的链接参考。
ZkUtils.apply(
"zookeeper1:port1,zookeeper2:port2",
sessionTimeoutMs,
connectionTimeoutMs,
false)
String zookeeperHost = "127.0.0.1:2181";
Boolean isSucre = false;
int sessionTimeoutMs = 200000;
int connectionTimeoutMs = 15000;
int maxInFlightRequests = 10;
Time time = Time.SYSTEM;
String metricGroup = "myGroup";
String metricType = "myType";
KafkaZkClient zkClient = KafkaZkClient.apply(zookeeperHost,isSucre,sessionTimeoutMs,
connectionTimeoutMs,maxInFlightRequests,time,metricGroup,metricType);
AdminZkClient adminZkClient = new AdminZkClient(zkClient);
String topicName1 = "myTopic";
int partitions = 3;
int replication = 1;
Properties topicConfig = new Properties();
adminZkClient.createTopic(topicName1,partitions,replication,
topicConfig,RackAwareMode.Disabled$.MODULE$);