解決@Async(“taskExecutor“)異步線程報錯問題
@Async(“taskExecutor“)異步線程報錯
Java 開發(fā)中常用@Async實現(xiàn)異步線程調(diào)用,以優(yōu)化接口性能。
但是@Async存在一個問題:子線程的請求頭丟失,在本服務沒有問題,一旦跨服務,請求頭丟失就會發(fā)生一系列報錯
上代碼:
如代碼所示,此處使用了@Async實現(xiàn)異步
其中build方法使用fegin調(diào)用外部接口
報錯信息:
報75行空指針,也就是build方法所在。
跟著報錯提示,我們點開看下具體是什么報錯
可以看到是getHeaders()方法報了空指針,也就是說請求頭丟失
來說說解決辦法
1.將當前線程的請求信息給子線程
2.將請求頭設置為子線程共享
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
如何使用Springfox?Swagger實現(xiàn)API自動生成單元測試
Springfox是一個使用Java語言開發(fā)開源的API Doc的框架,它的前身是swagger-springmvc,可以將我們的Controller中的方法以文檔的形式展現(xiàn),這篇文章主要介紹了如何使用Springfox?Swagger實現(xiàn)API自動生成單元測試,感興趣的朋友跟隨小編一起看看吧2024-04-04MyBatisPlus防全表更新與刪除的實現(xiàn)示例
本文主要介紹了MyBatisPlus防全表更新與刪除的實現(xiàn)示例,針對 update 和 delete 語句,阻止惡意的全表更新和全表刪除,具有一定的參考價值,感興趣的可以了解一下2023-10-10MyBatisPlus報錯:Failed to process,please exclud
這篇文章主要介紹了MyBatisPlus報錯:Failed to process,please exclude the tableName or statementId問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08細說Springcloud eureka的幾種主動下線服務的方式
這篇文章主要介紹了細說Springcloud eureka的幾種主動下線服務的方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09BigDecimal divide除法除不盡報錯的問題及解決
這篇文章主要介紹了BigDecimal divide除法除不盡報錯的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06