Nous prévoyons d'écrire un consommateur Kafka (Java) qui lit la file d'attente Kafka pour effectuer une action contenue dans le message.
Étant donné que les consommateurs fonctionnent de manière indépendante, le message sera-t-il traité par un seul consommateur à la fois? Sinon, tous les consommateurs traitent le même message car ils ont leur propre décalage dans la partition.
S'il vous plaît aidez-moi à comprendre.
Cela dépend de ID du groupe . Supposons que vous ayez un sujet avec 12 partitions. Si vous avez 2 consommateurs Kafka avec le même ID de groupe, ils liront tous les deux 6 partitions, ce qui signifie qu'ils liront un ensemble de partitions différent = un ensemble de messages différent. Si vous avez 4 clients Kafka avec le même identifiant de groupe, chacun d'eux lira tous trois partitions différentes, etc.
Mais lorsque vous définissez un identifiant de groupe différent, la situation change. Si vous avez deux consommateurs Kafka avec un identifiant de groupe différent, ils liront les 12 partitions sans aucune interférence. Cela signifie que les deux consommateurs liront exactement le même ensemble de messages indépendamment. Si vous avez quatre consommateurs Kafka avec un identifiant de groupe différent, ils liront tous toutes les partitions, etc.
Kafka transmettra chaque message des sujets souscrits à un processus de chaque groupe de consommateurs. Pour ce faire, il faut équilibrer les partitions entre tous les membres du groupe de consommateurs de sorte que chaque partition soit affectée à un seul consommateur du groupe. Conceptuellement, vous pouvez considérer un groupe de consommateurs comme un seul abonné logique composé de plusieurs processus.
En termes plus simples, le message/enregistrement Kafka est traité par un seul processus consommateur par groupe de consommateurs. Donc, si vous voulez que plusieurs consommateurs traitent le message/l'enregistrement, vous pouvez utiliser différents groupes pour les consommateurs.