【发布时间】:2019-04-19 01:26:38
【问题描述】:
这个问题是针对Spring Kafka的,与Apache Kafka with High Level Consumer: Skip corrupted messages相关
有没有办法配置 Spring Kafka 消费者跳过无法读取/处理(损坏)的记录?
我看到如果无法反序列化,消费者会卡在同一记录上。这是消费者抛出的错误。
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of java.time.LocalDate: no long/Long-argument constructor/factory method to deserialize from Number value
消费者轮询主题并在循环中不断打印相同的错误,直到程序被杀死。
在具有以下 Consumer 工厂配置的 @KafkaListener 中,
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
【问题讨论】:
-
我相信消费者从未敲过一条记录,如果您多次看到该错误消息,则意味着它发生在多条记录中
-
你能更新 JSON 负载和模型映射器类吗?
-
@Deadpool 消费者卡在同一条消息上。我通过日志和消费者组的偏移量验证了它。我解决了 JSON 序列化错误,但我的问题的目的是找到一种完全跳过此消息的方法。
标签: java apache-kafka spring-kafka