如何创建Kafka消费者群体?

时间:2013-02-25 07:40:15

标签: ruby apache-zookeeper apache-kafka

我是卡夫卡的新手。我正在尝试使用分配给该主题的1个主题和1个使用者组来实现简单的排队系统。但是我无法弄清楚如何创建一个消费者群体。

P.S。我正在使用Ruby,使用kafka-rb gem。

谢谢! 埃里克

3 个答案:

答案 0 :(得分:1)

我一直在寻找相同的东西,我不认为它实际上是Kafka的一部分,而是Java驱动程序与ZooKeeper一起使用的东西。如果您阅读了Kafka 0.7(http://kafka.apache.org/07/design.html)的设计文档,那么有一个标题为“消费者和消费者群体”的部分,他们会对此进行讨论。这是有道理的,因为ZooKeeper可以很容易地用于跟踪一组消费者的最新偏移量。

答案 1 :(得分:1)

如果您查看kafka使用者(http://kafka.apache.org/documentation.html)的配置,group.id是一个唯一字符串,用于标识此使用者所属的使用者组。 默认情况下,它是“”

似乎kafka-rb没有提供这样做的方法。 但是其他一些宝石可以帮助你做到这一点 https://github.com/zendesk/ruby-kafka#consumer-groups https://github.com/karafka/karafka#group

答案 2 :(得分:0)

更新:我们(Zendesk)发布了Racecar,这是一个基于ruby-kafka构建的简化Kafka消费者框架。

Racecar消费者看起来像这样:

# simple_consumer.rb
class SimpleConsumer < Racecar::Consumer
  subscribes_to "some-topic"

  def process(message)
    puts message.value
  end
end

要运行它,只需执行以下命令:

$ gem install racecar
$ racecar --require my_consumer MyConsumer

阅读更多关于Github:https://github.com/zendesk/racecar

原帖:

以下是ruby-kafka

中的操作方法
require "kafka"

kafka = Kafka.new(seed_brokers: ["kafka1", "kafka2"])
consumer = kafka.consumer(group_id: "my-group")

consumer.subscribe("my-topic")

consumer.each_message do |message|
  puts message.value
end

有关详细信息,另请参阅README