javascript - Ignoră eroarea HTTP 404 în circuitbreaker-ul opossum


Construiesc un API Express și am implementat un circuit breaker în el folosind opossum.

Există vreo modalitate ca întrerupătorul de circuit să ignore excepțiile HTTP personalizate generate de aplicație?

Am încercat să adaug opțiunea errorFilter, dar primesc aceeași problemă. Încă o consideră o defecțiune de circuite.

const options: CircuitOptions = {
    timeout: 3000, // If function takes longer than 3 seconds, trigger a failure
    errorThresholdPercentage: 50, // When 50% of the requests fail, trip the circuit
    resetTimeout: 30000, // After 30 seconds try again
    errorFilter: err => {
        // Filtering out Http404Error here.
        return err.status === 404 // Not Working
    }
}

Răspuns #1

Există un exemplu de opossum care folosește proprietatea errorFilter în cadrul depozitului opossum-playground

https://github.com/nodeshift-starters/opossum-playground/tree/master/error-filter

Acum, în cazul tău probabil că err.status nu returnează codul de stare, ci undefined (ghicesc aici deoarece nu am codul complet) și valoarea returnată de errorFilter nu este adevărată.

Deci oposumul continuă să considere că este un eșec.

Răspunsul #2

Tocmai am rezolvat aceeași problemă.

În cazul meu, făceam cererea folosind axios, așa că statusul răspunsului se află în err.response.status. Și în același mod în care menționează alexalikiotis, folosind err.status === 404, a fost evaluat ca undefined === 404.

Deci acest cod funcționează bine pentru mine atunci când efectuez apeluri peste rețea folosind axios:

errorFilter: err => {
    return err.response.status === 404
}