国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

spring-boot-devtools導(dǎo)致@RabbitListener反序列化失效

2023-08-22 00:32 作者:天羽ちよこ  | 我要投稿

消息的發(fā)送

今天在調(diào)試rabbitmq的消息發(fā)送和接收,我參考官方文檔中的寫法,直接將對象作為消息payload發(fā)送,寫法如下:

直接發(fā)送對象要求這個類實現(xiàn)了序列化接口,也就是說這玩意兒默認是使用java的對象序列化實現(xiàn)的。

消息的接收

在接收消息是直接使用@RabbitListener注解實現(xiàn)的,方法如下

啟動消費者后,消費直接拋出異常,異常如下

異常定位

定位到異常代碼所在的類和方法:PayloadMethodArgumentResolver#resolveArgument,加上斷點,看到數(shù)據(jù)如下:

異常原因是,原本有值的payload被截圖中藍色這一行(144行)給賦值為null了,繼而導(dǎo)致146行的if條件拋出異常。

這里奇怪的是,139的if條件中的 ClassUtils.isAssignable方法判斷類的繼承關(guān)系,理論上應(yīng)該返回true,因為targetClass和payloadClass完全一致。

但是這里返回false了,也就是說targetClass和payloadClass居然不等,繼續(xù)debug發(fā)現(xiàn),這倆類雖然是同一個類,但是,他倆的ClassLoader不是同一個,其中一個是RestartClassLoader

通過詢問搜索引擎,RestartClassLoader是 spring-boot-devtools這個依賴做的,目的是為了在開發(fā)階段熱加載,由于我的項目不需要熱加載,所以解決方案也很簡單了:

刪除spring-boot-devtools這個依賴。

至此,問題解決。

最后附上我的java和spring版本:

java-17

spring-boot-3.1.1

spring-boot-devtools導(dǎo)致@RabbitListener反序列化失效的評論 (共 條)

分享到微博請遵守國家法律
杂多县| 阿拉善盟| 泽普县| 油尖旺区| 石屏县| 通化市| 古交市| 岳阳市| 颍上县| 郴州市| 三明市| 东乌珠穆沁旗| 闽侯县| 平泉县| 师宗县| 永丰县| 大宁县| 稻城县| 兴化市| 个旧市| 泗阳县| 聊城市| 固始县| 元朗区| 应用必备| 邹平县| 清涧县| 太湖县| 云龙县| 吉林市| 长垣县| 曲麻莱县| 沁阳市| 万安县| 宁明县| 宁强县| 汾阳市| 扶余县| 乐清市| 新建县| 永丰县|