【发布时间】:2020-09-10 15:33:23
【问题描述】:
是否有一种简单的方法——使用 Kafka REST API——将消费者组中所有分区上的消费者偏移量推进到分区的末尾?实际上,有时我想跳过消费所有剩余的消息——例如,如果我预计会重新生成它们。
我知道我可以检索消费者组、检索分区、循环并查找每个分区——有没有更简单的方法?
【问题讨论】:
标签: apache-kafka kafka-consumer-api
是否有一种简单的方法——使用 Kafka REST API——将消费者组中所有分区上的消费者偏移量推进到分区的末尾?实际上,有时我想跳过消费所有剩余的消息——例如,如果我预计会重新生成它们。
我知道我可以检索消费者组、检索分区、循环并查找每个分区——有没有更简单的方法?
【问题讨论】:
标签: apache-kafka kafka-consumer-api
根据post--consumers-instances-positions-end 上的文档,您可以通过以下请求为ConsumerGroup 执行此操作:
POST /consumers/testgroup/instances/my_consumer/positions/end HTTP/1.1
Host: proxy-instance.kafkaproxy.example.com
Content-Type: application/vnd.kafka.v2+json
{
"partitions": [
{
"topic": "test",
"partition": 0
},
{
"topic": "test",
"partition": 1
}
]
}
不过,还是需要提前知道ConsumerGroup订阅的topic和partition。
我有时想跳过消费所有剩余的消息
我在这里看到了多个选项,但在我看来,它们都相当老套,也没有使用 Kafka Rest API。
将主题的保留时间(retention.ms)更改为一个较小的值(如1),稍等片刻让 LogCleaner 删除所有消息并将保留时间改回正常。然后生成新的替代数据。
将所有消费者的 ConsumerGroup 名称更改为新的 ConsumerGroup(配置 group.id),并通过设置 auto.offset.reset=latest 让消费者从主题末尾读取。然后生成新的替代数据。
与我最初的回答类似,使用 Kafka 工具 kafka-consumer-groups 手动将消费者组的偏移量(例如“myConsumer”)更改为结束偏移量:
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --reset-offsets --group myConsumer --topic myTopic --to-latest
【讨论】: