我们正在使用0.8.2.1建立一个新的Kafka项目,并希望专门为Kafka编写消费者抵消。因此,我们在消费者配置中设置了offsets.storage=kafka
和dual.commit.enabled=false
。但是,当我们创建消费者连接器时,它仍然希望连接到ZooKeeper:
kafka.consumer.Consumer.createJavaConsumerConnector(config);
// fails with:
// Caused by: java.lang.IllegalArgumentException: requirement failed:
// Missing required property 'zookeeper.connect'
我想也许我们只需要指定zookeeper.connect
并且它会被忽略所以我指定了一个无效的主机名,但是它仍然失败,因为它确实尝试连接。如果我们能够避免,我们真的不希望我们的消费者必须连接到ZooKeeper。那是什么给出了什么?
答案 0 :(得分:6)
似乎ZooKeeper仍然是0.8.2的要求,但是他们希望在0.8.3中解决这个问题。来自Gwen Shapira的邮件列表:
现有的消费者使用Zookeeper来提交偏移量和 将分区分配给不同的使用者和线程 消费者群体。 虽然抵消可以在0.8.2版本中提交给Kafka,其中 大大减少了Zookeeper的负担,消费者仍然需要 Zookeeper管理组成员资格和分区所有权。 新消费者(我们希望准备好0.8.3版本)将会 完全删除Zookeeper依赖项,管理偏移量和 Kafka本身的分区所有权。