Sobes.tech
Senior
42

Was würden Sie verlieren und was gewinnen bei explizitem Polling anstelle von @KafkaListener?

Unternehmen wurden gefragt
СБК ПАРУС

Antwort von AI

sobes.tech KI

При явном polling вместо использования аннотации @KafkaListener в Spring Kafka вы теряете удобство и автоматизацию, но приобретаете больший контроль над процессом потребления сообщений.

Что теряется:

  • Автоматическое управление потоками и обработкой сообщений
  • Упрощённая конфигурация и интеграция с Spring
  • Обработка ошибок и повторных попыток встроена в @KafkaListener

Что приобретается:

  • Возможность точно контролировать, когда и как вызывать poll()
  • Гибкость в управлении смещениями (offsets), например, ручное коммитирование
  • Возможность интегрировать логику потребления в более сложные сценарии или циклы

Пример явного polling:

Consumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("topic"));

while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
    for (ConsumerRecord<String, String> record : records) {
        // Обработка сообщения
    }
    consumer.commitSync();
}

Таким образом, выбор зависит от требований к контролю и удобству в вашем приложении.