2017-01-11 9 views
0

pritam_groupに2つのパーティションtest_a-0とtest_a-1を割り当てた消費者が1人あります。実行中のアプリケーションでパーティションを作成したときのKafka 0.10.0.0クライアントコンシューマデータの損失

私は、コマンドの下

bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 5 --topic test_a 

し、次のコマンド

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_a 

を実行し、データを入力すると= "これはメッセージである"

その後、私の消費者は、このメッセージが表示されることはありません。なぜ分からないの? パーティションを増やした直後ではなく、数分後にコンシューマログにこれらの行が表示されます。

2017-01-11 08:51:31,631 +0100 INFO [org.apache.kafka.clients.consumer.internals.ConsumerCoordinator] (EJB default - 1) Revoking previously assigned partitions [test_a-1, test_a-0] for group pritam_group 
2017-01-11 08:51:31,632 +0100 INFO [org.apache.kafka.clients.consumer.internals.AbstractCoordinator] (EJB default - 1) (Re-)joining group pritam_group 
2017-01-11 08:51:31,636 +0100 INFO [org.apache.kafka.clients.consumer.internals.AbstractCoordinator] (EJB default - 1) Successfully joined group pritam_group with generation 2 
2017-01-11 08:51:31,636 +0100 INFO [org.apache.kafka.clients.consumer.internals.ConsumerCoordinator] (EJB default - 1) Setting newly assigned partitions [test_a-1, test_a-3, test_a-2, test_a-4, test_a-0] for group pritam_group 

答えて

0

消費者は、割り当てられた2つのパーティション(test_a - 0、1)からのみデータを消費します。既存のトピックにさらに3つのパーティションを作成したら新しいデータは、他のパーティション(2,3,4)にプッシュされる可能性があります。したがって、消費者はそのメッセージを受け取らないでしょう。

0

何が起こっているかは、コンシューマがリバランスしてこれらの新しいパーティションに割り当てられる前に、あなたが作成したメッセージが新しいパーティションの1つに送られているということです。コンシューマに新しいパーティションが割り当てられても、コンシューマ設定auto.offset.resetを最新(デフォルト値)に設定する必要があるため、メッセージは表示されません。この設定を最も早く設定すると、メッセージが表示されます。

+0

kafakのいずれかのプロパティがあり、私は消費者側 –

+0

にいくつかの遅延を見ていて、新しいパーティションの飼育係が同時にその変更のために、消費者のコーディネーターに通知作成した後、私はあなたが何をしたいと思うことがmetadata.max.age.msさそうですあなたの消費者の構成 –

関連する問題