【发布时间】:2017-07-20 07:45:06
【问题描述】:
我是卡夫卡的新手。我正在尝试使用 1 个主题和分配给该主题的 1 个消费者组来实现一个简单的排队系统。但是我不知道如何创建一个消费者组。
附言我正在使用带有 kafka-rb gem 的 Ruby。
谢谢! 埃里克
【问题讨论】:
标签: ruby apache-zookeeper apache-kafka
我是卡夫卡的新手。我正在尝试使用 1 个主题和分配给该主题的 1 个消费者组来实现一个简单的排队系统。但是我不知道如何创建一个消费者组。
附言我正在使用带有 kafka-rb gem 的 Ruby。
谢谢! 埃里克
【问题讨论】:
标签: ruby apache-zookeeper apache-kafka
更新:我们 (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。
【讨论】:
我一直在寻找同样的东西,我不认为它实际上是 Kafka 的一部分,而是 Java 驱动程序与 ZooKeeper 结合使用的东西。如果您阅读 Kafka 0.7 (http://kafka.apache.org/07/design.html) 的设计文档,底部有一个标题为“消费者和消费者群体”的部分,他们会在其中讨论一下。这是有道理的,因为 ZooKeeper 可以很容易地用于跟踪一组消费者的最新偏移量。
【讨论】:
如果你查看 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
【讨论】: