美文网首页
Spring Data ElasticSearch坑

Spring Data ElasticSearch坑

作者: Gallrax | 来源:发表于2018-03-23 14:15 被阅读0次

    前篇

    No1.正在搭建ES-MQ-Cache-Demo,该项目是以Spring Boot + Spring Data为核心架构开发。主要流程为通过AOP来记录用户日志,通过ActiveMQ Quene将日志放入消息队列,Consumer消费时将日志全文检索至ElasticSerach。
    No2.用户能够正常操作,日志也能够正常记录。但是当通过API查询日志时发现报空指针异常。

    测试()

    image.png

    可以发现,数据是存在的


    image.png

    F9会发现抛了空指针异常,很郁闷,明明数据是有的,但是为什么会空指针呢?

    查问题

    测试发现数据是没有问题。很头疼,不如我们在这个方法同样记录一下日志,看返回值是否正常。
    如果返回值正常,则我们测试是否为FastJson解析有问题,如果FastJson解析没有问题就再深入研究(理论上只可能是FastJson的问题)
    @SysLog(日志记录AOP)


    image.png
    image.png

    发现结果是正常返回的,那就手动序列化为Json
    结果:好吧,空指针,说明是FastJson序列化的问题,那我们测试一下Jackson


    image.png
    结果:好吧,空指针,说明不一定是序列化的问题(出于对FastJson的不信任,所以拿Jackson测试一下证明)
    那我们就深入一下,到底是哪里出了问题
    经过debug发现,异常出现在这里
    image.png

    结果

    因为查看日志信息,只能到达write方法,后续方法是ASM字节码组装而成,无法debug,但通过日志信息科一得到最终的异常是由于AggregatedPageImpl,这个类就是Spring Data Page类的子类AggregatedPageImpl,说明问题出在这个类上。希望以后注意

    解决方法

    1.自己封装Page类
    2.page.getContent()

    相关文章

      网友评论

          本文标题:Spring Data ElasticSearch坑

          本文链接:https://www.haomeiwen.com/subject/rucxcftx.html