一组在消费者是否调用seek设定为整个集团的偏移

问题描述 投票:1回答:2

我有3名消费者在同一组,我打电话寻求()来设置一个用户在一个分区的偏移量。这会否设置偏移为所有消费者的组或只是在那个特定的分区偏移。

我希望能够重置组与日志中的所有记录的开始。但我只能打电话寻求一个消费者。

apache-kafka reset seek
2个回答
2
投票

求()将回滚到仅该分区指定的偏移量。然而,旧的高层次消费的API,也没有办法做到这一点。但在调用方法

public void seek(TopicPartition partition,
    long offset);

它会倒带在分区提供TopicPartition的话题来抵消。

如果你想重置集团消费,那么你就必须做出寻求电话TopicPartition与每个分区的偏移。

或者你可以使用offsetsForTimes并呼吁组分区如下:

Map<TopicPartition, Long> query = new HashMap<>();
query.put(new TopicPartition("topic-name", 0),Instant.now().minus(10, MINUTES).toEpochMilli());
Map<TopicPartition, OffsetAndTimestamp> result = consumer.offsetsForTimes(query);
result.entrySet().stream().forEach(entry -> consumer.seek(entry.getKey(), entry.getValue().offset()));

如果您使用的是旧的高层次的消费,目前还没有API中的消费者复位偏移。唯一的办法是停止所有消费者和复位偏移量为ZK消费者群体手动。

然而,在0.11.0版本中加入一个工具来重置偏移量与不同的范围如主题,分区等群体。你可以在这里找到细节:https://cwiki.apache.org/confluence/display/KAFKA/KIP-122%3A+Add+Reset+Consumer+Group+Offsets+tooling。和https://issues.apache.org/jira/browse/KAFKA-4743


1
投票

具有3名消费者在同一组是指一个分区只分配给这些消费者之一,所以当你打电话寻求,它只有该分区上只有一个消费者,因此其他人不会受到影响的效果。

© www.soinside.com 2019 - 2024. All rights reserved.