Tarpinio serverio klaidos Spring WebClient: reaktyvus apdorojimas prieš registravimą
Atskirkite WebClient reaktyvų klaidos signalą, transporto registravimą ir HTTP būsenos apdorojimą, kai nepavyksta tarpinis serveris.
Transportas gali užregistruoti nepavykusį tarpinio serverio ryšį, o programa tuo pačiu metu gauna ir apdoroja reaktyvią klaidą. Vien log įrašas neįrodo, kad programos apdorotuvas buvo praleistas.
Sekite klaidos signalą grandinėje, kuri iš tikrųjų prenumeruojama. try/catch aplink kodą, kuris tik sukuria Mono, yra kita apimtis nei vėlesnio tinklo sutrikimo apdorojimas.
| Operatorius | Poveikis |
|---|---|
| doOnError | Atlieka šalutinį poveikį, kol klaida tęsiasi |
| onErrorMap | Paverčia klaidą kita klaida |
| onErrorResume | Perjungia į alternatyvų leidėją |
Pasirinkite elgseną, kurios reikia programai. Metrikos įrašymas nereikalauja grąžinti netikro sėkmingo turinio. Alternatyvus atsakymas turėtų būti sąmoningas programos rezultatas, o ne būdas paslėpti nepavykusį maršrutą.
Taip pat atskirkite transporto išimtis nuo gautų HTTP klaidos būsenų. Tarpinio serverio ryšys gali nepavykti anksčiau, nei egzistuoja įprastas paskirties atsakymas, todėl HTTP būsenos apdorotuvas gali neturėti ko tikrinti. Išsaugokite WebClientRequestException priežastį diagnozuodami žemesnio lygio sutrikimą.
Koreguokite registravimą tik supratę rezultatą. Viso transporto registratoriaus išjungimas gali pašalinti įrodymus, reikalingus vėlesniam skirtajam laikui, TLS problemai ar autentifikavimo sutrikimui, nekeičiant reaktyvaus srauto elgsenos.