#spring #apache-kafka #spring-kafka
#spring #apache-kafka #spring-kafka
Вопрос:
Существует ли свойство spring.kafka, обрабатывающее пакеты ошибок
spring.kafka.listener.type=BATCH
и spring.kafka.listener.ack-mode=BATCH
с помощью SeekToCurrentBatchErrorHandler? Заранее спасибо.
Ответ №1:
Вы не можете установить его с помощью свойства, но вы можете переопределить автоматически настроенную фабрику контейнеров Boot следующим образом:
@Bean
public ConcurrentKafkaListenerContainerFactory<?, ?> kafkaListenerContainerFactory(
ConcurrentKafkaListenerContainerFactoryConfigurer configurer,
ConsumerFactory<Object, Object> kafkaConsumerFactory) {
ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<>();
configurer.configure(factory, kafkaConsumerFactory);
factory.setBatchErrorHandler(new SeekToCurrentBatchErrorHandler());
return factory;
}
Он получит все свойства загрузки, и затем вы сможете дополнительно настроить фабрику по мере необходимости.
Комментарии:
1. Спасибо, Гэри — это действительно помогает. Есть планы добавить его в будущем?
2. Я добавил новую проблему с функцией при загрузке. Это не будет свойством, но оно может автоматически подключаться к
@Bean
, если в контексте приложения найдено ровно одно (как в настоящее время делается для непакетногоErrorHandler
).3. Это тоже помогает. 🙂 Я заметил, что автоматическое подключение компонента ErrorHandler не совсем работает для пакета. Думал, что делаю что-то не так. 🙂
4. Не уверен, следует ли мне задать вопрос здесь — Есть ли причина, по которой функция «spring.kafka.listener.ack-on-error= false / true» не реализована?
5. На самом деле вам не следует; им не нравятся расширенные комментарии здесь. Просто свойств оооочень много, было выбрано всего несколько, и вы всегда можете использовать технику в моем ответе для «расширенной» конфигурации. Вы могли бы открыть другую проблему, чтобы запросить ее при загрузке, но они, скорее всего, не добавят ее до версии 2.2 (которая использует S-K 2.3, и мы переключили значение по умолчанию на
false
там).