Prenons-les dans l'ordre :)
1 - Lorsqu'un producteur produit un message - Il précisera le sujet auquel il souhaite envoyer le message, n'est-ce pas? Se soucie-t-il des partitions?
Par défaut, le producteur ne se soucie pas du partitionnement. Vous avez la possibilité d'utiliser un partitionneur personnalisé pour avoir un meilleur contrôle, mais c'est totalement facultatif.
2 - Lorsqu'un abonné est en cours d'exécution - Spécifie-t-il son identifiant de groupe afin qu'il puisse faire partie d'un cluster de consommateurs du même sujet ou de plusieurs sujets qui intéressent ce groupe de consommateurs?
Oui, les consommateurs rejoignent (ou créent s'ils sont seuls) un groupe de consommateurs pour partager la charge. Aucun consommateur du même groupe ne recevra jamais le même message.
3 - Chaque groupe de consommateurs a-t-il une partition correspondante sur le courtier ou est-ce que chaque consommateur en a une?
Ni. Tous les consommateurs d'un groupe de consommateurs se voient attribuer un ensemble de partitions, sous deux conditions: aucun consommateur du même groupe n'a de partition en commun - et le groupe de consommateurs dans son ensemble se voit attribuer chaque partition existante.
4 - Les partitions créées par le courtier ne sont-elles donc pas une préoccupation pour les consommateurs?
Ce n'est pas le cas, mais vous pouvez voir à partir de 3 qu'il est totalement inutile d'avoir plus de consommateurs que de partitions existantes, c'est donc votre niveau de parallélisme maximal pour la consommation.
5 - Puisqu'il s'agit d'une file d'attente avec un offset pour chaque partition, est-il de la responsabilité du consommateur de spécifier les messages qu'il souhaite lire? A-t-il besoin de sauvegarder son état?
Oui, les consommateurs enregistrent un décalage par sujet par partition. Ceci est totalement géré par Kafka, pas de soucis à ce sujet.
6 - Que se passe-t-il lorsqu'un message est supprimé de la file d'attente? - Par exemple: la rétention a duré 3 heures, puis le temps passe, comment le décalage est-il géré des deux côtés?
Si un consommateur demande un décalage non disponible pour une partition sur les courtiers (par exemple, en raison d'une suppression), il entre en mode erreur et se réinitialise finalement pour cette partition sur le message le plus récent ou le plus ancien disponible (selon la valeur de configuration auto.offset.reset) et continuez à travailler.