java-Implementierung : polling-a-web-service

Unten finden Sie meine Anforderung.

Voraussetzung : Umfrage a-web-service. Zwei entscheidende Parameter des polling max_timeout, polling_interval konfiguriert werden in properties-Datei. Hauptziel ist, zu verbringen, für eine Zeit von insgesamt in den Erhalt der Antwort. Wenn wir die Antwort mit in max_timeout, können wir Rückgabe der Antwort an den client. Sonst werden wir werfen eine Fehlermeldung, dass der Vorgang fehlgeschlagen ist.

Unten ist das code-snippet, das ich geschrieben habe.

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

Konnte Sie korrigieren Sie mich, wenn dies der ordnungsgemäßen Durchführung von polling. Ich bin wenig besorgt, dass dieser code geht davon aus, dass der webservice-Aufruf liefert in kürzester Zeit. Wenn dies dauert 2-3 Sekunden (normalerweise tut ), dann würden wir mehr ausgeben, als max_timeout insgesamt für POLLING allein. Wie könnten wir dieses Problem beheben. Gibt es einen besseren Ansatz als diesen.

  • catch (InterruptedException ie) { System.out.println(ie.getMessage()); } ... tun Sie das nicht. Nur rethrow es { throw new RuntimeException(ie) }
  • Dank artbristol für Ihren Vorschlag. Ich will diesen code ändern zu werfen RTE anstelle von SOP.
InformationsquelleAutor shafi khan | 2012-01-23
Schreibe einen Kommentar