Kafka - 具有特定偏移量的消费者组创建?

Kafka - Consumer group creation with specific offset?

在 Kafka 中创建主题后,您可以创建任意数量的消费者组,只需尝试使用这些组来读取主题。

我想创建一个额外的消费者组来监控真实消费者组的消息内容——一个用来偷看他们的消息。因此,GUI 会让您在任何消费者组上单击 "peek",并且 "peeker" 组会将其偏移量更新为正在监视的组的偏移量,然后它会向您显示来自该偏移量的消息。

虽然我很困惑,因为您不能在第一次明确创建消费者组;您似乎必须阅读一条消息才能获取在 zookeeper 中创建的偏移节点。

我的问题

有没有办法显式创建指向特定偏移量的消费者组,或者是否可以为尚未使用的消费者组手动创建zookeeper节点以便将其初始化为正确的偏移值?还是这种自动创建会扰乱消费者组分配过程?

您可以查看 Kafka Web Console 项目,该项目已经做了与您描述的类似的事情。

如果您想自己执行此操作,则需要使用简单的消费者 API 并手动处理新消费者组(存储在 Zookeeper 或其他地方)的偏移量。您可以从现有消费者组获取当前偏移量,然后使用与您的查看组相同的偏移量读取消息。只要组 id 不同,就不会互相干扰或弄乱任何东西。

对于读者,不再支持 Kafka Web 控制台。请考虑 Kafka Manager

如上所述 Kafka Manager 有一个非常好的界面,值得您花时间设置。但是如果你想要 CLI 版本,正如我所需要的,下面应该可以工作:

groupId="legitGroupId"
kafka="localhost:9092"
declare -a topics=(
    "topic1" 
    "topic2"
    )

# Create a single consumer of all the topics which starts starts at each topics latest offset
# Use --dry-run instead of --execute to see how the end results will look
for topic in "${topics[@]}"; do
    echo "Adding consumer to $topic"
    kafka-consumer-groups --bootstrap-server $kafka --topic $topic --group $groupId --execute --reset-offsets --to-latest
    echo ""
done