如何在批处理模式下处理反序列化异常?
我使用的是 spring kafka 和 spring boot -2.3.8 版本。
试过这个选项:
@Bean
public ConcurrentKafkaListenerContainerFactory<?, ?> kafkaListenerContainerFactory(
ConcurrentKafkaListenerContainerFactoryConfigurer configurer,
ConsumerFactory<Object, Object> kafkaConsumerFactory) {
ConcurrentKafkaListenerContainerFactory<Object, Object> factory =
new ConcurrentKafkaListenerContainerFactory<>();
configurer.configure(factory, kafkaConsumerFactory);
factory.setBatchErrorHandler(new SeekToCurrentBatchErrorHandler());
}
但它抛出异常: 引起:java.lang.IllegalStateException:错误处理程序必须是一个ErrorHandler,而不是org.springframework.kafka.listener.SeekToCurrentBatchErrorHandler
这是我的应用程序属性:
spring.kafka.consumer.bootstrap-servers = localhost:9093
spring.kafka.consumer.enable-auto-commit = false
spring.kafka.consumer.auto-offset-reset = earliest
spring.kafka.consumer.max-poll-records = 10
spring.kafka.consumer.key-deserializer= org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer= org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.listener.type = batch
spring.kafka.ack.discard = true
spring.kafka.listener.ack-mode = MANUAL
spring.kafka.listener.concurrency = 1
idle-between-polls = 120000
答案 0 :(得分:1)
这意味着未正确设置侦听器类型。
我刚刚将您的代码和配置复制到了一个新应用中,它按预期工作。