それらを順番に見ていきましょう:)
1-プロデューサーがメッセージを生成しているとき-メッセージを送信するトピックを指定しますが、そうですか?パーティションを気にしますか?
デフォルトでは、プロデューサーはパーティション化を気にしません。カスタマイズされたパーティショナーを使用してより適切に制御するオプションがありますが、それは完全にオプションです。
2-サブスクライバーが実行中の場合-サブスクライバーが関心を持っている同じトピックまたは複数のトピックのコンシューマーのクラスターの一部になることができるように、グループIDを指定していますか?
はい。コンシューマは、コンシューマグループに参加して(または自分だけの場合は作成して)負荷を共有します。同じグループの2つのコンシューマーが同じメッセージを受信することはありません。
3-各コンシューマーグループには、ブローカーに対応するパーティションがありますか、それとも各コンシューマーにはパーティションがありますか?
どちらでもない。コンシューマグループ内のすべてのコンシューマには、一連のパーティションが割り当てられます。2つの条件:同じグループ内の2つのコンシューマに共通のパーティションがないこと、およびコンシューマグループ全体として、既存のすべてのパーティションが割り当てられます。
4-パーティションはブローカーによって作成されているので、コンシューマーには関係ありませんか?
そうではありませんが、3からわかるように、既存のパーティションよりも多くのコンシューマーを持つことはまったく役に立たないので、消費するための最大並列レベルです。
5-これは各パーティションのオフセットを持つキューなので、コンシューマーは、読み取りたいメッセージを指定する必要がありますか?状態を保存する必要がありますか?
はい、コンシューマはパーティションごとのトピックごとのオフセットを保存します。これは完全にKafkaによって処理され、心配する必要はありません。
6-メッセージがキューから削除されるとどうなりますか?-例:保持が3時間で、その後時間が経過した場合、オフセットは両側でどのように処理されますか?
コンシューマーがブローカーのパーティションで使用できないオフセットを要求した場合(たとえば、削除のため)、エラーモードに入り、最終的にこのパーティションに対して、使用可能な最新または最も古いメッセージのいずれかにリセットされます。 auto.offset.reset構成値)、作業を続行します。