In Jaxrs (WebClient zum Beispiel) können wir einen Verbindungs-Timeout und einen Lese-Timeout setzen.Jaxrs Fähigkeit, ein globales Timeout zu setzen (connect + read)
ClientConfiguration c = WebClient.getConfig(client);
HTTPConduit http = c.getHttpConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(timeout);
httpClientPolicy.setReceiveTimeout(timeout);
httpClientPolicy.setAllowChunking(false);
http.setClient(httpClientPolicy);
Ich möchte ein Timeout setzen, die beide enthält, ich weiß nicht wirklich, wie viel Zeit bei der Verbindung oder bei der Aufnahme ausgegeben wird, ist meine Anforderung eine Antwort in X Sekunden zu erhalten oder einfach nur die Suche verwerfen .
Vielleicht über einen Interceptor ?, aber ich weiß nicht, ob es machbar ist – cocorossello
Ich habe 'WebClient' javadoc und es überprüft Es ist nicht möglich, eine aktuelle Anforderung abzubrechen, daher ist es nicht möglich, einen Interceptor zu verwenden, da dieser im selben Thread ausgeführt wird wie die Hauptanforderung (und der Hauptthread wird bis zur Antwort/Zeitüberschreitung blockiert). Sie müssen einen zusätzlichen Überwachungs-Thread mit einem Timeout erstellen und in beiden Fällen asynchron arbeiten: Timeout oder korrekte Antwort. Überlegen Sie, ob es sich lohnt ... – pedrofb