2017-08-31 7 views
1

同じグループに3つのコンシューマがあり、1つのコンシューマの1つのパーティションにオフセットを設定するためにseek()を呼び出します。 Willは、グループ内のすべてのコンシューマのオフセットまたはその特定のパーティションのオフセットのみを設定します。グループ内のコンシューマに対してseekを呼び出すと、グループ全体のオフセットが設定されます

ログに記録されているすべてのレコードを最初からやり直すことができます。しかし、私はただ一つの消費者にシークを呼び出すだけです。

答えて

1

同じグループに3つのコンシューマを配置すると、1つのパーティションがこれらのコンシューマのうちの1つにのみ割り当てられるため、シークを呼び出すと、コンシューマが1つしかないため、影響を受けた。

1

seek()は、そのパーティション内の指定されたオフセットにのみ巻き戻します。 しかし、古い高水準の消費者APIの場合、それを行う方法はありませんでした。 しかし、この方法

public void seek(TopicPartition partition, 
    long offset); 

への呼び出しでは、提供さTopicPartitionのパーティションと話題に相殺するために巻き戻します。

グループの消費をリセットする場合は、各パーティションのオフセットを使用してseekを呼び出してTopicPartitionを呼び出す必要があります。

それとも、offsetsForTimesを使用すると、ここで指定されたグループのパーティションのために呼び出すことができます。 https://jeqo.github.io/post/2017-01-31-kafka-rewind-consumers-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

関連する問題