Proxyfouten in Spring WebClient: reactieve afhandeling versus logging
Onderscheid het reactieve foutsignaal van WebClient, transportlogging en HTTP-statusafhandeling tijdens een proxyfout.
De transportlaag kan een mislukte proxyverbinding loggen terwijl de applicatie de reactieve fout ook ontvangt en afhandelt. De logregel alleen bewijst niet dat de handler van de applicatie is overgeslagen.
Volg het foutsignaal in de keten die daadwerkelijk wordt geabonneerd. Een try/catch rond code die slechts een Mono bouwt, is een ander bereik dan het afhandelen van een latere netwerkstoring.
| Operator | Effect |
|---|---|
| doOnError | Voert een neveneffect uit terwijl de fout doorloopt |
| onErrorMap | Zet een fout om in een andere fout |
| onErrorResume | Schakelt over naar een alternatieve uitgever |
Kies het gedrag dat de applicatie nodig heeft. Het vastleggen van een metriek vereist niet dat er nep-succesvolle inhoud wordt teruggegeven. Een alternatief antwoord moet een bewust applicatieresultaat zijn, geen manier om een mislukte route te verbergen.
Onderscheid ook transportuitzonderingen van ontvangen HTTP-foutstatussen. Een proxyverbinding kan mislukken voordat een gewoon antwoord van de bestemming bestaat, dus een HTTP-statushandler heeft mogelijk niets te onderzoeken. Bewaar de oorzaak van een WebClientRequestException bij het diagnosticeren van de lagere storing.
Pas logging pas aan nadat het resultaat is begrepen. Het volledig uitschakelen van de transportlogger kan bewijs weghalen dat nodig is voor een latere time-out, een TLS-probleem of een authenticatiefout, zonder het gedrag van de reactieve pipeline te wijzigen.