Junior — Middle
Hogyan lehet beállítani tíz fogyasztót minden partícióhoz az üzenetfeldolgozó rendszerben?
sobes.tech MI
Válasz az MI-től
Üzenetfeldolgozó rendszerekben, mint például az Apache Kafka, az egy időben olvasható fogyasztók száma korlátozott — általában egy fogyasztó egy partícióhoz egy fogyasztói csoporton belül.
Tíz fogyasztó konfigurálásához minden partícióhoz, lehet:
- Külön fogyasztói csoportokat létrehozni, ahol minden fogyasztó ugyanabból a partícióból olvas, de külön csoportokban (így mindenki megkapja az összes üzenetet).
- Terheléselosztást alkalmazni az alkalmazáson belül, ahol egy fogyasztó olvas a partícióból, majd az üzeneteket több szál vagy kezelő között osztja szét.
Java példában Kafka Consumer használatával:
// Egy fogyasztó olvas a partícióból
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.assign(Collections.singleton(new TopicPartition("topic", partitionNumber)));
// A fogyasztón belül indíthatunk 10 szálat az üzenetek feldolgozására
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));
}
}