Sobes.tech
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));
    }
}