簡體   English   中英

等待服務返回的不良做法?

[英]Bad practice to wait for service to return?

我正在調用Spring Web服務,大約需要5秒鍾才能返回響應。 webservice調用在部署到websphere之前在Tomcat容器中進行。 我被另一個開發人員告知,對這個服務的調用應該在一個單獨的java線程中處理,因為它是“將JVM卡在一行代碼上太長時間的不良做法”,在這種情況下它被卡在了調用Web服務的代碼。 我不同意並認為,如果Web服務需要5或10秒才能完成,那么這很好,將收到響應並且代碼執行將繼續正常進行。 我對嗎 ?

我提出兩點:

  1. 如果后續計算取決於該Web服務的結果,那么您無論如何都沒有選擇,並且產生新線程只是浪費資源;

  2. 如果此調用完全獨立,則可能有充分的理由將其卸載到單獨的線程中。 即使五秒鍾本身並不多,這可能不是(現在或代碼庫的未來)系統毫無意義地等待獨立任務完成的唯一點。 讓獨立任務獨立運行通常一種很好的做法。

但是,如果您的調用發生在部署到Tomcat容器中的應用程序中(此問題從您的問題中未完全清楚),那么Web應用程序生成其自己的子線程通常是一種不好的做法。 如果有任務,則應將任務提交給容器提供的執行程序服務。

同步調用web服務是個壞主意,它可能在集成或測試環境上工作,但響應將隨着系統負載而增加。 你應該看看某種異步通信。

在我們的項目中,我們習慣了大量的同步通信,所有這些都被重寫為異步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM