Sobes.tech
Junior — Middle

Πώς μπορείτε να ρυθμίσετε δέκα καταναλωτές για κάθε διαμέρισμα στο σύστημα επεξεργασίας μηνυμάτων;

sobes.tech AI

Απάντηση από AI

Συστήματα επεξεργασίας μηνυμάτων, όπως το Apache Kafka, περιορίζουν τον αριθμό των καταναλωτών που μπορούν να διαβάζουν ταυτόχρονα από μια ίδια διαμέριση — συνήθως ένας καταναλωτής ανά διαμέριση εντός μιας ομάδας καταναλωτών.

Για να ρυθμίσετε δέκα καταναλωτές για κάθε διαμέριση, μπορείτε:

  • Να δημιουργήσετε ξεχωριστές ομάδες καταναλωτών, όπου κάθε καταναλωτής διαβάζει από την ίδια διαμέριση αλλά σε διαφορετικές ομάδες (έτσι κάθε ένας θα λαμβάνει όλα τα μηνύματα).
  • Να χρησιμοποιήσετε την εξισορρόπηση φόρτου εντός της εφαρμογής, όπου ένας καταναλωτής διαβάζει από τη διαμέριση και στη συνέχεια διανέμει τα μηνύματα μεταξύ πολλαπλών νημάτων ή χειριστών.

Παράδειγμα σε Java με Kafka Consumer:

// Ένας καταναλωτής διαβάζει από τη διαμέριση
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.assign(Collections.singleton(new TopicPartition("topic", partitionNumber)));

// Μέσα στον καταναλωτή, μπορείτε να ξεκινήσετε 10 νήματα για την επεξεργασία των μηνυμάτων
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));
    }
}