私はApache KafkaとそのJavaクライアントで作業しており、メッセージは異なるKafka消費者間で負荷分散されていることがわかります同じグループに属する(つまり、同じグループIDを共有する)。
私のアプリケーションでは、すべての消費者がすべてのメッセージを読む必要があります。
だから私はいくつかの質問があります:
コンシューマープロパティでグループIDを設定しない場合、KafkaコンシューマーはどのグループIDになりますか?
単一のデフォルト値はありますか?
クライアントは毎回ランダムな値を作成しますか?
コンシューマごとに異なるIDを作成して、各コンシューマがすべてのメッセージを受信するようにする必要がありますか?
編集:ご回答いただきありがとうございます。
正しい:消費者グループIDを設定しない場合、Kafkaが文句を言うはずです。
ただし、グループIDがnullの場合、Javaクライアントは問題を回避するために空の文字列 ""に設定します。したがって、明らかにそれが私が探していたデフォルト値です。
GroupIdを設定していなくても(したがって、すべてgroupId == ""である場合でも)、プロデューサーが書き込むすべてのメッセージを受信しているように思えます。
私はまだこれを説明できません:提案はありますか?
Consumer PropertiesでグループIDを設定しない場合、どのグループIDがKafka Consumerに与えられますか?
kafkaコンシューマにはコンシューマグループがありません。代わりに、このエラーが表示されます:The configured groupId is invalid
デフォルト値は1つだけですか?
はい、consumer.properties
ファイルkafka=参照用。デフォルトのコンシューマグループIDは次のとおりです:group.id=test-consumer-group
クライアントは毎回ランダムな値を作成しますか?
いいえ、groupIdはJava client starting Kafka 0.9.0.xコンシューマ。このJIRAを参照できます。 https: //issues.Apache.org/jira/browse/KAFKA-2648
各コンシューマがすべてのメッセージを確実に受信するために、各コンシューマに異なるIDを作成する必要がありますか?
はい。すべてのコンシューマーが同じグループIDを使用している場合、トピック内のメッセージはそれらのコンシューマーに配信されます。言い換えれば、各コンシューマーは重複しないメッセージのサブセットを取得します。同じグループにさらに多くのコンシューマが存在すると、並列処理の度合いと消費の全体的なスループットが向上します。一方、各コンシューマが独自のグループに属している場合、各コンシューマはすべてのメッセージの完全なコピーを取得します。
Group.idを設定しないと、トピックデータを使用するときにエラーが発生します。
org.Apache.kafka.common.errors.InvalidGroupIdException: The configured groupId is invalid
22:08:14.132 [testAuto-kafka-consumer-1] INFO org.Apache.kafka.clients.consumer.internals.AbstractCoordinator - (Re-)joining group
22:08:14.132 [testAuto-kafka-consumer-1] DEBUG org.Apache.kafka.clients.consumer.internals.AbstractCoordinator - Sending JoinGroup ({group_id=,session_timeout=15000,rebalance_timeout=300000,member_id=,protocol_type=consumer,group_protocols=[{protocol_name=range,protocol_metadata=Java.nio.HeapByteBuffer[pos=0 lim=18 cap=18]}]}) to coordinator bogon:9092 (id: 2147483647 rack: null)
22:08:14.132 [testAuto-kafka-consumer-1] ERROR org.Apache.kafka.clients.consumer.internals.AbstractCoordinator - Attempt to join group failed due to fatal error: The configured groupId is invalid
22:08:14.132 [testAuto-kafka-consumer-1] ERROR org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer - Container exception