異步調用Feign接口空指針問題

異步調用Feign接口空指針問題原因:

Feign接口的Request 默認是主線程和子線程不共享的,當異步調用Feign接口會因爲獲取不到ServletRequestAttributes報空指針。

解決方案:
我們先獲取到當前請求,再分享給子線程。
首先獲取attributes :

 RequestAttributes attributes = RequestContextHolder.getRequestAttributes();//防止fegin獲取不到當前請求

在線程中設置attributes :

RequestContextHolder.setRequestAttributes(attributes);

實例代碼:

ExecutorService executorService = Executors.newSingleThreadExecutor();
            List<ExportFamilyMasterImplForm> finalList = list;
            RequestAttributes attributes = RequestContextHolder.getRequestAttributes();//防止fegin獲取不到當前請求
            executorService.execute(()->{
                RequestContextHolder.setRequestAttributes(attributes);
                List<ExportFamilyMasterForm>  excelList = familyMemberService.dataTransformation(finalList);
            });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章