Sobes.tech
Junior — Middle

Comment configurer dix consommateurs pour chaque partition dans un système de traitement de messages?

sobes.tech IA

Réponse de l'IA

Dans les systèmes de traitement de messages, tels qu'Apache Kafka, le nombre de consommateurs pouvant lire simultanément à partir d'une même partition est limité — généralement un consommateur par partition dans le cadre d'un même groupe de consommateurs.

Pour configurer dix consommateurs pour chaque partition, vous pouvez:

  • Créer des groupes de consommateurs séparés, où chaque consommateur lit à partir de la même partition mais dans différents groupes (ainsi chacun recevra tous les messages).
  • Utiliser un équilibrage de charge dans l'application, où un consommateur lit à partir de la partition puis distribue les messages entre plusieurs threads ou gestionnaires.

Exemple en Java avec Kafka Consumer:

// Un consommateur lit à partir de la partition
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.assign(Collections.singleton(new TopicPartition("topic", partitionNumber)));

// À l'intérieur du consommateur, vous pouvez lancer 10 threads pour traiter les messages
ExecutorService executor = Executors.newFixedThreadPool(10);
while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
    for (ConsumerRecord<String, String> record : records) {
        executor.submit(() -> process(record));
    }
}