web-dev-qa-db-ja.com

kafkaサーバーからトピック内のすべてのメッセージを取得する方法

トピックの最初からすべてのメッセージをサーバーから取得したいと思います。

例:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic testTopic --from-beginning

上記のコンソールコマンドを使用する場合、トピックのすべてのメッセージを最初から取得したいのですが、Javaコードを使用すると、トピックのすべてのメッセージを最初から消費することができませんでした。

6
gsc0441

最も簡単な方法は、コンシューマを起動してすべてのメッセージを排出することです。トピックにパーティションがいくつあるか、また既存のコンシューマグループがすでにあるかどうかはわかりませんが、いくつかのオプションがあります。

このAPIを見てください: https://kafka.Apache.org/090/javadoc/index.html?org/Apache/kafka/clients/consumer/KafkaConsumer.html

1)同じコンシューマグループにすでにコンシューマがあり、それでも最初から消費を開始したい場合は、APIドキュメントにリストされているseekオプションを使用して、各コンシューマのオフセットを0に設定する必要がありますグループ。これは最初から消費し始めます。

2)それ以外の場合は、新しいコンシューマグループで数人のコンシューマを開始できます。シークについて心配する必要はありません。

PS:Kafkaについて他にご不明な点がありましたら、今後の設定について詳細をお知らせください。多くのことは、インフラストラクチャの構成方法と、それをどのようにしたいかによって異なり、したがって、ケースごとに異なります。

5
Manav Garg
TopicPartition topicPartition = new TopicPartition(topic, 0);
List<TopicPartition> partitions = Arrays.asList(topicPartition); 
consumer.assign(partitions); consumer.seekToBeginning(partitions);
4
gsc0441

次のコマンドを使用して、すべてのメッセージを取得できます。

cd Users/kv/kafka/bin

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topicName --from-beginning --max-messages 100
2
KayV

消費者グループを変更するだけ

ConsumerConfig.GROUP_ID_CONFIG-新しいグループIDへ

そして設定

AUTO_OFFSET_RESET_CONFIG-最も早い

サンプルコード-

    props.put(ConsumerConfig.GROUP_ID_CONFIG, "newID");
    props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");