Proxy-Fehler in Spring WebClient: reaktive Behandlung gegenüber Logging
Unterscheiden Sie das reaktive Fehlersignal von WebClient, das Transport-Logging und die HTTP-Statusbehandlung bei einem Proxy-Fehler.
Der Transport kann eine fehlgeschlagene Proxy-Verbindung protokollieren, während die Anwendung den reaktiven Fehler ebenfalls empfängt und behandelt. Der Logeintrag allein belegt nicht, dass der Handler der Anwendung übersprungen wurde.
Folgen Sie dem Fehlersignal in der Kette, die tatsächlich abonniert wird. Ein try/catch um Code, der lediglich ein Mono erzeugt, ist ein anderer Bereich als die Behandlung eines späteren Netzwerkfehlers.
| Operator | Wirkung |
|---|---|
| doOnError | Führt einen Seiteneffekt aus, während der Fehler weiterläuft |
| onErrorMap | Wandelt einen Fehler in einen anderen Fehler um |
| onErrorResume | Wechselt zu einem alternativen Publisher |
Wählen Sie das Verhalten, das die Anwendung benötigt. Das Erfassen einer Metrik erfordert nicht, gefälschten Erfolgsinhalt zurückzugeben. Eine alternative Antwort sollte ein bewusstes Anwendungsergebnis sein, kein Mittel, um eine fehlgeschlagene Route zu verbergen.
Unterscheiden Sie außerdem Transport-Ausnahmen von empfangenen HTTP-Fehlerstatus. Eine Proxy-Verbindung kann fehlschlagen, bevor eine gewöhnliche Antwort des Ziels existiert, sodass ein HTTP-Status-Handler möglicherweise nichts zu prüfen hat. Bewahren Sie die Ursache einer WebClientRequestException bei der Diagnose des tiefer liegenden Fehlers.
Passen Sie das Logging erst an, nachdem das Ergebnis verstanden ist. Das vollständige Abschalten des Transport-Loggers kann Beweise entfernen, die für einen späteren Timeout, ein TLS-Problem oder einen Authentifizierungsfehler benötigt werden, ohne das Verhalten der reaktiven Pipeline zu ändern.