Välityspalvelimen virheet Spring WebClientissä: reaktiivinen käsittely vai lokitus
Erota WebClientin reaktiivinen virhesignaali, siirtokerroksen lokitus ja HTTP-tilan käsittely välityspalvelinvirheen aikana.
Siirtokerros voi lokittaa epäonnistuneen välityspalvelinyhteyden, samalla kun sovellus vastaanottaa ja käsittelee reaktiivisen virheen. Pelkkä lokimerkintä ei todista, että sovelluksen käsittelijä ohitettiin.
Seuraa virhesignaalia ketjussa, johon todella tilataan. try/catch pelkästään Monon rakentavan koodin ympärillä on eri laajuus kuin myöhemmän verkkovirheen käsittely.
| Operaattori | Vaikutus |
|---|---|
| doOnError | Suorittaa sivuvaikutuksen virheen jatkuessa |
| onErrorMap | Muuntaa virheen toiseksi virheeksi |
| onErrorResume | Vaihtaa vaihtoehtoiseen julkaisijaan |
Valitse toimintatapa, jota sovellus tarvitsee. Mittarin tallentaminen ei edellytä väärennetyn onnistuneen sisällön palauttamista. Vaihtoehtoisen vastauksen tulee olla sovelluksen tarkoituksellinen tulos, ei tapa piilottaa epäonnistunutta reittiä.
Erota myös siirtokerroksen poikkeukset vastaanotetuista HTTP-virhetiloista. Välityspalvelinyhteys voi epäonnistua ennen kuin tavanomaista kohdevastausta on olemassa, joten HTTP-tilan käsittelijällä ei ehkä ole mitään tarkistettavaa. Säilytä WebClientRequestExceptionin syy, kun diagnosoidaan alempaa virhettä.
Säädä lokitusta vasta, kun tulos on ymmärretty. Koko siirtokerroksen lokittajan sammuttaminen voi poistaa todisteita, joita tarvitaan myöhempään aikakatkaisuun, TLS-ongelmaan tai todennusvirheeseen, muuttamatta reaktiivisen putken toimintaa.