解決@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使用jdbc連接實(shí)現(xiàn)對MySQL增刪改查操作的全過程
JDBC的全稱是Java?Database?Connectivity,即Java數(shù)據(jù)庫連接,它是一種可以執(zhí)行SQL語句的Java?API,下面這篇文章主要給大家介紹了關(guān)于Java使用jdbc連接實(shí)現(xiàn)對MySQL增刪改查操作的相關(guān)資料,需要的朋友可以參考下2023-03-03
Java使用位運(yùn)算實(shí)現(xiàn)加減乘除詳解
這篇文章主要為大家詳細(xì)介紹了Java如何使用位運(yùn)算實(shí)現(xiàn)加減乘除,文中的示例代碼講解詳細(xì),對我們深入了解Java有一定的幫助,感興趣的可以了解一下2023-05-05
Mybatis反射核心類Reflector的實(shí)現(xiàn)
本文主要介紹了Mybatis反射核心類Reflector的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
SpringBoot集成gRPC微服務(wù)工程搭建實(shí)踐的方法
這篇文章主要介紹了SpringBoot集成gRPC微服務(wù)工程搭建實(shí)踐的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
Java基礎(chǔ)之Comparable與Comparator概述
這篇文章主要介紹了Java基礎(chǔ)之Comparable與Comparator詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
java使用異或?qū)崿F(xiàn)變量互換和異或加密解密示例
這篇文章主要介紹了使用異或?qū)崿F(xiàn)變量互換和異或加密解密示例,需要的朋友可以參考下2014-02-02
SpringBoot項(xiàng)目啟動時初始化操作常見的幾種方式
這篇文章主要介紹了SpringBoot項(xiàng)目啟動時初始化操作常見的幾種方式,這些方法可以幫助開發(fā)者在服務(wù)啟動時自動執(zhí)行必要的初始化操作,需要的朋友可以參考下2025-02-02

