In den Cloud-Clientbibliotheken für Java werden Wiederholungsversuche verwendet, um unerwartete, vorübergehende Fehler zu beheben (d. h. der Server ist vorübergehend nicht verfügbar). Mehrere Versuche können zu einer erfolgreichen Antwort des Servers führen.
Die Standardwerte für Wiederholungen werden vom Team ausgewählt, das den Cloud-Dienst betreibt. Diese Werte für Wiederholungsversuche werden pro RPC konfiguriert. Ein Dienst kann Wiederholungen nur für eine Teilmenge von RPCs aktivieren. Es ist möglich, dass jeder RPC für einen Dienst unterschiedlich konfiguriert ist.
Wiederholungsparameter
In Clientbibliotheken gibt es zwei Arten von Wiederholungsparametern, die konfiguriert werden können:
- Statuscode für Wiederholung:Eine Reihe von Statuscodes, bei denen die Anfrage wiederholt werden soll.
- Zeitüberschreitung für Wiederholungsversuche oder Versuchsanzahl:Konfigurierbare RetrySettings zum Definieren der Grenzen.
Standardspeicherort der RPC-Wiederholungskonfiguration
Die Standardkonfigurationen für Wiederholungsversuche sind in der generierten Datei {Client}StubSettings definiert. Die Standardkonfigurationen für Wiederholungsversuche sind beispielsweise in der Java-Asset-Version 3.64.0 für den ExportAssets-RPC an den folgenden Stellen definiert:
Wiederholungsstatuscodes:In der Datei
AssetServiceStubSettings.javakonfiguriert. Beispiel:ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions = ImmutableMap.builder(); definitions.put("no_retry_0_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList())); // ... More StatusCode configurations RETRYABLE_CODE_DEFINITIONS = definitions.build();Wiederholungsparameter:In der Datei
AssetServiceStubSettings.javakonfiguriert. Beispiel:ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder(); RetrySettings settings = null; settings = RetrySettings.newBuilder() .setInitialRpcTimeoutDuration(Duration.ofMillis(60000L)) .setRpcTimeoutMultiplier(1.0) .setMaxRpcTimeoutDuration(Duration.ofMillis(60000L)) .setTotalTimeoutDuration(Duration.ofMillis(60000L)) .build(); definitions.put("no_retry_0_params", settings); // ... More RetrySettings configurations RETRY_PARAM_DEFINITIONS = definitions.build();
Beide Konfigurationen werden in der Datei AssetServiceStubSettings.java dem RPC zugeordnet. Beispiel:
builder
.exportAssetsSettings()
.setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_0_codes"))
.setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_0_params"));
Wiederholungskonzepte für Clientbibliotheken
Wenn Sie Wiederholungen aktivieren, kann ein RPC mehrere Versuche unternehmen, um einen erfolgreichen Aufruf zu erzielen. Ein erfolgreicher Aufruf ist eine Antwort von einem Server, der einen OK-Statuscode (von gRPC) oder einen 2xx-Statuscode (von HttpJson) zurückgibt.
Versuch im Vergleich zum Vorgang
Mit der folgenden RetrySettings-Konfiguration werden die Einstellungen für Wiederholungsversuche für einen RPC-Versuch und einen RPC-Vorgang geändert: