Clientseitige Wiederholungen konfigurieren

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:

  1. Statuscode für Wiederholung:Eine Reihe von Statuscodes, bei denen die Anfrage wiederholt werden soll.
  2. 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.java konfiguriert. 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.java konfiguriert. 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: