Spring Data ElasticSearch坑

前篇

No1.正在搭建ES-MQ-Cache-Demo,該項(xiàng)目是以Spring Boot + Spring Data為核心架構(gòu)開發(fā)。主要流程為通過AOP來記錄用戶日志,通過ActiveMQ Quene將日志放入消息隊(duì)列,Consumer消費(fèi)時(shí)將日志全文檢索至ElasticSerach。
No2.用戶能夠正常操作,日志也能夠正常記錄。但是當(dāng)通過API查詢?nèi)罩緯r(shí)發(fā)現(xiàn)報(bào)空指針異常。

測(cè)試()

image.png

可以發(fā)現(xiàn),數(shù)據(jù)是存在的


image.png

F9會(huì)發(fā)現(xiàn)拋了空指針異常,很郁悶,明明數(shù)據(jù)是有的,但是為什么會(huì)空指針呢?

查問題

測(cè)試發(fā)現(xiàn)數(shù)據(jù)是沒有問題。很頭疼,不如我們?cè)谶@個(gè)方法同樣記錄一下日志,看返回值是否正常。
如果返回值正常,則我們測(cè)試是否為FastJson解析有問題,如果FastJson解析沒有問題就再深入研究(理論上只可能是FastJson的問題)
@SysLog(日志記錄AOP)


image.png

image.png

發(fā)現(xiàn)結(jié)果是正常返回的,那就手動(dòng)序列化為Json
結(jié)果:好吧,空指針,說明是FastJson序列化的問題,那我們測(cè)試一下Jackson


image.png

結(jié)果:好吧,空指針,說明不一定是序列化的問題(出于對(duì)FastJson的不信任,所以拿Jackson測(cè)試一下證明)
那我們就深入一下,到底是哪里出了問題
經(jīng)過debug發(fā)現(xiàn),異常出現(xiàn)在這里
image.png

結(jié)果

因?yàn)椴榭慈罩拘畔?,只能到達(dá)write方法,后續(xù)方法是ASM字節(jié)碼組裝而成,無法debug,但通過日志信息科一得到最終的異常是由于AggregatedPageImpl,這個(gè)類就是Spring Data Page類的子類AggregatedPageImpl,說明問題出在這個(gè)類上。希望以后注意

解決方法

1.自己封裝Page類
2.page.getContent()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容