一风钻、不應(yīng)該使用fastjson打印Mono
fastjson會(huì)序列化或者反序列化 get筐高,set,is開(kāi)頭的方法以舒。
Mono是抽象類,可以看一下Mono.fromFuture實(shí)際返回的實(shí)現(xiàn)類慢哈。
而這個(gè)類MonoOnAssembly及其所有的父類對(duì)象只有一個(gè)is開(kāi)頭的方法蔓钟,就是接口Scannable中的isScanAvailable方法
所以對(duì)返回的抽象類Mono(實(shí)現(xiàn)類MonoOnAssembly),其實(shí)使用fastJson序列化得到的結(jié)果都是一樣的卵贱,都是{"scanAvailable":true}
二滥沫、其實(shí)返回的Mono<T>中,已經(jīng)包含了我們需要的結(jié)果键俱,只是使用fastjson打印兰绣,進(jìn)入了誤區(qū),以為沒(méi)返回
對(duì)返回的Mono<T>調(diào)用其block方法可以得到T對(duì)象编振,這個(gè)對(duì)象其實(shí)就是我們想要的返回對(duì)象缀辩。
三、在我們項(xiàng)目框架中存在隱藏的bug
當(dāng)從Mono<T>中獲取T對(duì)象時(shí)踪央,如果此時(shí)異步驅(qū)動(dòng)的事件還未填充Feature時(shí)臀玄,默認(rèn)的獲取方式會(huì)一直阻塞當(dāng)前線程,如果線程阻塞過(guò)多杯瞻,會(huì)導(dǎo)致oom。
可考慮超時(shí)優(yōu)化方式炫掐,避免因?yàn)閭€(gè)別接口收不到核心的響應(yīng)導(dǎo)致整個(gè)項(xiàng)目oom卡死魁莉。
該超時(shí)優(yōu)化方式已經(jīng)過(guò)測(cè)試不會(huì)影響性能。這里不是真的卡住3秒募胃,而是最多等待3秒旗唁,如果3秒Feture仍未完成,則返回默認(rèn)值痹束。