პროქსის შეცდომები Spring WebClient-ში: რეაქტიული დამუშავება ლოგირების წინააღმდეგ
განასხვავეთ WebClient-ის რეაქტიული შეცდომის სიგნალი, ტრანსპორტის ლოგირება და HTTP სტატუსის დამუშავება პროქსის ჩავარდნისას.
ტრანსპორტს შეუძლია ჩაწეროს წარუმატებელი პროქსის კავშირი ლოგში, მაშინ როცა აპლიკაცია ასევე იღებს და ამუშავებს რეაქტიულ შეცდომას. მხოლოდ ლოგის ჩანაწერი არ ადასტურებს, რომ აპლიკაციის დამმუშავებელი გამოტოვებულია.
თვალყური ადევნეთ შეცდომის სიგნალს იმ ჯაჭვში, რომელზეც რეალურად ხდება გამოწერა. try/catch მხოლოდ Mono-ს ამშენებებელი კოდის ირგვლივ სხვა სფეროა, ვიდრე მოგვიანებით ქსელური ჩავარდნის დამუშავება.
| ოპერატორი | ეფექტი |
|---|---|
| doOnError | ასრულებს გვერდით ეფექტს, სანამ შეცდომა გრძელდება |
| onErrorMap | გარდაქმნის შეცდომას სხვა შეცდომად |
| onErrorResume | გადადის ალტერნატიულ გამომქვეყნებელზე |
აირჩიეთ ის ქცევა, რომელიც აპლიკაციას სჭირდება. მეტრიკის ჩაწერა არ მოითხოვს ყალბი წარმატებული შიგთავსის დაბრუნებას. ალტერნატიული პასუხი უნდა იყოს აპლიკაციის განზრახ შედეგი და არა წარუმატებელი მარშრუტის დამალვის საშუალება.
ასევე განასხვავეთ ტრანსპორტის გამონაკლისები მიღებული HTTP შეცდომის სტატუსებისგან. პროქსის კავშირი შეიძლება ჩავარდეს მანამ, სანამ არსებობს ჩვეულებრივი დანიშნულების პასუხი, ამიტომ HTTP სტატუსის დამმუშავებელს შეიძლება საჩხრეკი არაფერი ჰქონდეს. შეინარჩუნეთ WebClientRequestException-ის მიზეზი ქვედა დონის ჩავარდნის დიაგნოსტიკისას.
შეცვალეთ ლოგირება მხოლოდ შედეგის გაგების შემდეგ. მთელი ტრანსპორტის ლოგერის გამორთვამ შეიძლება მოაშოროს მტკიცებულებები, რომლებიც საჭიროა მოგვიანებით დროის ამოწურვის, TLS პრობლემის ან ავთენტიფიკაციის ჩავარდნისთვის, რეაქტიული მილსადენის ქცევის შეცვლის გარეშე.