解決@Async(“taskExecutor“)異步線程報錯問題
@Async(“taskExecutor“)異步線程報錯
Java 開發(fā)中常用@Async實(shí)現(xiàn)異步線程調(diào)用,以優(yōu)化接口性能。
但是@Async存在一個問題:子線程的請求頭丟失,在本服務(wù)沒有問題,一旦跨服務(wù),請求頭丟失就會發(fā)生一系列報錯
上代碼:
如代碼所示,此處使用了@Async實(shí)現(xiàn)異步
其中build方法使用fegin調(diào)用外部接口
報錯信息:
報75行空指針,也就是build方法所在。
跟著報錯提示,我們點(diǎn)開看下具體是什么報錯
可以看到是getHeaders()方法報了空指針,也就是說請求頭丟失
來說說解決辦法
1.將當(dāng)前線程的請求信息給子線程
2.將請求頭設(shè)置為子線程共享
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)英文句子中的單詞順序逆序輸出的方法
這篇文章主要介紹了Java實(shí)現(xiàn)英文句子中的單詞順序逆序輸出的方法,涉及java字符串遍歷、判斷、截取、輸出等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01Ajax 驗(yàn)證用戶輸入的驗(yàn)證碼是否與隨機(jī)生成的一致
本文主要介紹了后臺驗(yàn)證用戶輸入的驗(yàn)證碼是否與隨機(jī)生成的驗(yàn)證碼一致的方法,具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02如何使用Springfox?Swagger實(shí)現(xiàn)API自動生成單元測試
Springfox是一個使用Java語言開發(fā)開源的API Doc的框架,它的前身是swagger-springmvc,可以將我們的Controller中的方法以文檔的形式展現(xiàn),這篇文章主要介紹了如何使用Springfox?Swagger實(shí)現(xiàn)API自動生成單元測試,感興趣的朋友跟隨小編一起看看吧2024-04-04MyBatisPlus防全表更新與刪除的實(shí)現(xiàn)示例
本文主要介紹了MyBatisPlus防全表更新與刪除的實(shí)現(xiàn)示例,針對 update 和 delete 語句,阻止惡意的全表更新和全表刪除,具有一定的參考價值,感興趣的可以了解一下2023-10-10SpringBoot項(xiàng)目中使用緩存Cache的正確方法分享
緩存可以通過將經(jīng)常訪問的數(shù)據(jù)存儲在內(nèi)存中,減少底層數(shù)據(jù)源如數(shù)據(jù)庫的壓力,從而有效提高系統(tǒng)的性能和穩(wěn)定性。本文就來講講SpringBoot項(xiàng)目中使用緩存Cache的正確姿勢吧2023-04-04MyBatisPlus報錯:Failed to process,please exclud
這篇文章主要介紹了MyBatisPlus報錯:Failed to process,please exclude the tableName or statementId問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08細(xì)說Springcloud eureka的幾種主動下線服務(wù)的方式
這篇文章主要介紹了細(xì)說Springcloud eureka的幾種主動下線服務(wù)的方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09BigDecimal divide除法除不盡報錯的問題及解決
這篇文章主要介紹了BigDecimal divide除法除不盡報錯的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06