web-dev-qa-db-ja.com

安定したKafka消費者グループ内のトピックのオフセットを戻す方法は?

次のコマンドを使用して、コンシューマグループ内のトピックのオフセットを元に戻そうとします。

bin/kafka-consumer-groups.sh --bootstrap-server loclahost:9092 --group xxx-0 --topic schedule-changed --reset-offsets --shift-by -2 --execute

(はい、kafka version> 1.x)を使用しています)その結果、次のメッセージが表示されました:

エラー:グループ 'xxx-0'が非アクティブで、現在の状態が安定している場合にのみ、割り当てをリセットできます。

グループの状態を'stable'から'inactive'に変更するにはどうすればよいですか?

8
Karol Król

reset-offsets kafka-consumer-groups.shのオプションは、オフセットを戻す前に、まずそのグループでコンシューマーがアクティブかどうかを確認します。 「安定」とは、アクティブなコンシューマーが稼働していることを意味します。

使用 describe-groups消費者グループを確認するオプション:

bin/kafka-consumer-groups.sh --bootstrap-server $SERVERS --group $GROUP --describe

トピックの 'CONSUMER-ID/Host/CLIENT-ID'の下にエントリが表示される場合は、まだコンシューマーが実行されていることを意味します。消費者を存続させるアプリをシャットダウンすると、消費者グループは非アクティブになり、オフセットを自由にシフトできるようになります。

8
kellanburket

私も同じ問題を抱えていましたが、ケランバーケットの回答とは対照的に、もはや実行している消費者はいませんでした。その場合、コンシューマーグループを削除する必要がありました。

kafka-consumer-groups --zookeeper a.zookeeper.Host:2181 --group the-group-name --delete

新しいバージョンのkafkaでは、以下を使用する必要がある場合があります。

kafka-consumer-groups --bootstrap-server $SERVERS --group the-group-name --delete
2
rabejens