问题描述:使用redission客户端封装的stream消息队列,在进行消息轮询时,偶发出现空指针问题。
[2024-11-13 09:59:20] [] [] [redis-stream-consumer-thread-1 ] [lambda$streamMessageListenerContainer$1] [ERROR] [c.r.c.r.s.config.RedisStreamConfig] Cannot invoke "java.util.List.iterator()" because "records" is null
java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because "records" is null
at org.springframework.data.redis.stream.StreamPollTask.deserializeAndEmitRecords(StreamPollTask.java:151)
at org.springframework.data.redis.stream.StreamPollTask.doLoop(StreamPollTask.java:128)
at org.springframework.data.redis.stream.StreamPollTask.run(StreamPollTask.java:112)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:842)
解决方案:可以看到redission官网在3.30.0版本解决了这个问题
使用redission封装的redis stream时遇到这个问题,只需要升级redission到3.30.0之后的版本即可。