You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring-Kafka启动时偶发单个NullPointerException问题排查求助

生产环境Kafka消费偶发NPE问题排查求助

生产环境消费Kafka记录时遇到偶发NullPointerException(NPE),仅在应用启动后出现一次,并非每次必现,且多Pod部署中只有单个Pod启动时会触发。错误在Spring日志输出‘Started (myapplication) in xx seconds’约3秒后抛出,单次部署只出现一次,但重新部署时会再次出现。

抛出异常后应用运行正常,推测不是配置问题。由于未提交偏移量,该记录应该会被重新处理,但不确定实际情况。

根因异常

Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because the return value of "java.util.Map.get(Object)" is null
    at org.springframework.kafka.listener.adapter.DelegatingInvocableHandler.invoke(DelegatingInvocableHandler.java:204)

完整抛出异常

org.springframework.kafka.KafkaException: Seek to current after exception; nested exception is org.springframework.kafka.listener.ListenerExecutionFailedException: Listener method 'public default void com.lightspeed.hospitality.orderpay.app.kafka.consumers.GenericConsumer.onRawEvent(org.apache.kafka.clients.consumer.ConsumerRecord<java.lang.String, byte[]>)' threw exception; nested exception is java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because the return value of "java.util.Map.get(Object)" is null; nested exception is java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because the return value of "java.util.Map.get(Object)" is null
    at org.springframework.kafka.listener.SeekUtils.seekOrRecover(SeekUtils.java:208)

消费者实现

消费者类上使用@KafkaListener注解,处理方法如下:

@KafkaHandler(isDefault = true)
void onRawEvent(ConsumerRecord<String, byte[]> consumerRecord) 

定位到的问题代码

已查看spring-kafka源码,定位到问题出在以下代码:

return new InvocationResult(result, replyTo, this.handlerReturnsMessage.get(handler));

执行this.handlerReturnsMessage.get(handler)时返回null,导致无法拆箱为原始类型boolean,但仍不清楚问题原因或是否为框架Bug。

使用版本

  • spring-boot 2.7.0
  • spring-kafka 2.8.6
  • kafka-clients 3.0.1

内容的提问来源于stack exchange,提问作者rmrt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:32:17