私はkafkaに不慣れで、最後に消費されたオフセットからメッセージを読み取る方法があるかどうかを理解しようとしていますが、最初からではありません。
私は、私の意図が逸脱しないように、事例を書いています。
Eg:
1) I produced 5 messages at 7:00 PM and console consumer consumed those.
2) I stopped consumer at 7:10 PM
3) I produced 10 message at 7:20 PM. No consumer had read those messages.
4) Now, i have started console consumer at 7:30 PM, without from-beginning.
5) Now, it Will read the messages produced after it has started. Not the earlier ones, which were produced at 7.20 PM
最後に消費されたオフセットから生成されたメッセージを取得する方法はありますか?
kafkaを初めて使用し、最初からではなく最後に消費されたオフセットからメッセージを読み取る方法があるかどうかを理解しようとしています。
はい、コンソールコンシューマを使用して、最後に消費されたオフセットから読み取ることができます。 kafka-console-consumerを呼び出すときにconsumer.configフラグを追加する必要があります。
例:-
[root@sandbox bin]# ./kafka-console-consumer.sh --topic test1 --zookeeper localhost:2181 --consumer.config /home/mrnakumar/consumer.properties
ここで/ home/mrnakumar/consumer.propertiesはgroup.idを含むファイルです。 /home/mrnakumar/consumer.propertiesは次のようになります。
group.id = consoleGroup
Consumer.configを使用すると、最初から[--from-beginning]を使用して読み取るか、ログの最後からのみ読み取ることができます。ログの終わりとは、コンシューマーの開始後に公開されたすべてのメッセージを意味します。
コンシューマ設定で_auto.offset.reset=earliest
_および固定_group.id=something
_を設定すると、最後にコミットされたオフセットでコンシューマが開始されます。あなたの場合、7:20に最初のメッセージで消費を開始する必要があります。開始後に投稿されたメッセージの読み取りを開始する場合、_auto.offset.reset=latest
_は7:20に送信された10個のメッセージを無視し、開始後に受信したメッセージを読み取ります。
最初から開始したい場合は、最初のconsumer.poll()
の後にseekToBeginning
を呼び出すか、コンシューマグループIDを一意のものに変更する必要があります。
largest
のコンシューマー構成のauto.offset.reset
パラメーターを設定して、最後にコミットされたオフセットの後にすべてのメッセージを読み取るようにする必要があります。