我有2個微服務(A和B)。異步HTTP請求與新線程上的HTTP請求
A有一個接受POST請求的端點。當用戶發出POST請求時,會發生以下情況:
- 服務A從POST請求正文獲取對象並將其存儲在數據庫中。
- 服務A將對象轉換爲不同的對象。新對象通過Jersey HTTP客戶端發送到服務B.
第2步發生在我創建的Java線程池(Executors.newCachedThreadPool)上。通過在新線程上執行第2步,服務A的端點響應時間不受影響。
但是,如果服務B需要很長時間才能響應,則服務A在接收到許多POST請求時可能會創建太多線程。爲了解決這個問題,我可以使用一個固定的線程池(Exectuors.newFixedThreadPool)。
除了固定線程池,我還應該使用異步非阻塞HTTP客戶端嗎?如這裏的一個:https://hc.apache.org/httpcomponents-asyncclient-dev/。我使用的Jersey HTTP客戶端被阻塞。
這似乎是正確的使用異步HTTP客戶端。 但是,如果我切換到一個固定的線程池,我認爲異步HTTP客戶端不會提供顯着的好處 - 我錯誤地認爲這是什麼?