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));
}
}