2016-11-23 4 views
0

Ich habe einen Java-Restful-Web-Service implementiert, und ich habe eine Methode in diesem ws, die eine HTTP-Anfrage macht, die 3-4 Minuten dauert, möchte ich wissen, ob ich irgendwelche Vorteile bekommen kann diesen Aufruf asynchron zu machen.Asynchrone HTTP-Anfrage in Restfull Web-Service

Der Thread könnte durch eine andere Anfrage verwendet werden oder wird sowieso durch den Hauptanruf blockiert?

Edit: Ich mache eine Petition P zu meinem Web-Service A (nur eine synchrone Petition), diese Petition wird von Thread T1 behandelt, wenn die Petition P die URL anrufen, die 3-4 Minuten dauert, würde ich Vorteile erhalten wenn ich diesen Aufruf asynchron mache (zu der URL, die 3-4 Minuten dauert). Vorteile wie der Thread T1 werden in der Lage sein, neue Petitionen zu bearbeiten. Wenn die Antwort nein ist, gibt es dann noch einen weiteren Vorteil, den asynchronen Aufruf auszuführen?

Antwort

0

Es ist nicht gut, eine HTTP-Anfrage für eine so lange Zeit zu blockieren, weil HTTP synchron ist.

Anstatt zu blockieren, wäre es besser, es asynchron zu machen und 202 Accepted zurückgeben. Für das Ergebnis bekommen hast du zwei Möglichkeiten:

  • Polling (Client in regelmäßigen Abständen Umfragen für ein Ergebnis)
  • Rückruf (benachrichtigen Client mit Hilfe von Callback-URL)

Für weitere Lesung Blick auf diesem Blogpost: https://www.adayinthelifeof.nl/2011/06/02/asynchronous-operations-in-rest/ oder Best way to create REST API for long lasting tasks?.

+0

Ja, das wusste ich schon, aber das beantwortet meine Hauptfrage nicht. Ich habe die Frage für eine bessere Beschreibung aktualisiert. –

Verwandte Themen