請在下面找到我的要求。java實現:輪詢web服務
要求:輪詢Web服務。屬性文件中配置了兩個關鍵的輪詢參數max_timeout,polling_interval。總體目標是花費整體時間獲得迴應。如果我們在max_timeout中獲得響應,我們可以將響應返回給客戶端。否則,我們會拋出一個錯誤,指出操作不成功。
下面是我寫的代碼片段。
int maxTimeOut = 10;
int interval = 2;
int iterations = maxTimeOut/interval;
boolean success = false;
for (int i = 0; i < iterations; i++)
{
System.out.println("Number of iteration = " + i);
try
{
Thread.sleep(interval * 1000);
System.out.println("Waited for " + interval + " seconds");
success = getWSResponse(i);
System.out.println("CALL" + ((success) ? "SUCCESSFUL" : "FAIL"));
if(success) break;
}catch (InterruptedException ie)
{
System.out.println(ie.getMessage());
}
}
//Send the success flag to client
如果這是輪詢的正確實施,你能糾正我嗎?我有點擔心這段代碼假設web服務調用很快返回。如果這需要2-3秒(通常是這樣),那麼我們將單獨花費超過max_timeout。我們如何解決這個問題。有沒有比這更好的方法。
'catch(InterruptedException ie){System.out.println(ie.getMessage()); }'不要那樣做。只需重新拋出它{{拋出新的RuntimeException(ie)}' – artbristol
感謝artbristol爲您的建議。我將使此代碼更改爲拋出RTE而不是SOP。 –