[英]Bad practice to wait for service to return?
我正在調用Spring Web服務,大約需要5秒鍾才能返回響應。 webservice調用在部署到websphere之前在Tomcat容器中進行。 我被另一個開發人員告知,對這個服務的調用應該在一個單獨的java線程中處理,因為它是“將JVM卡在一行代碼上太長時間的不良做法”,在這種情況下它被卡在了調用Web服務的代碼。 我不同意並認為,如果Web服務需要5或10秒才能完成,那么這很好,將收到響應並且代碼執行將繼續正常進行。 我對嗎 ?
我提出兩點:
如果后續計算取決於該Web服務的結果,那么您無論如何都沒有選擇,並且產生新線程只是浪費資源;
如果此調用完全獨立,則可能有充分的理由將其卸載到單獨的線程中。 即使五秒鍾本身並不多,這可能不是(現在或代碼庫的未來)系統毫無意義地等待獨立任務完成的唯一點。 讓獨立任務獨立運行通常是一種很好的做法。
但是,如果您的調用發生在部署到Tomcat容器中的應用程序中(此問題從您的問題中未完全清楚),那么Web應用程序生成其自己的子線程通常是一種不好的做法。 如果有任務,則應將任務提交給容器提供的執行程序服務。
同步調用web服務是個壞主意,它可能在集成或測試環境上工作,但響應將隨着系統負載而增加。 你應該看看某種異步通信。
在我們的項目中,我們習慣了大量的同步通信,所有這些都被重寫為異步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.