Back to articles
Implementing the Circuit Breaker Pattern in TypeScript

Implementing the Circuit Breaker Pattern in TypeScript

via Dev.to WebdevYoung Gao

Implementing the Circuit Breaker Pattern in TypeScript Your payment service is down. Every request to it times out after 30 seconds. 100 requests per second means 3000 threads waiting on a dead service. Your entire system cascades. Three States Closed = normal, requests pass. Open = failing, reject immediately. Half-Open = testing recovery with one probe. Implementation type State = " closed " | " open " | " half-open " ; class CircuitBreaker { private state : State = " closed " ; private failures = 0 ; private lastFailure = 0 ; constructor ( private threshold = 5 , private timeout = 60000 ) {} async call ( fn ) { if ( this . state === " open " ) { if ( Date . now () - this . lastFailure > this . timeout ) this . state = " half-open " ; else throw new Error ( " Circuit is OPEN " ); } try { const result = await fn (); this . reset (); return result ; } catch ( err ) { this . recordFailure (); throw err ; } } private reset () { this . state = " closed " ; this . failures = 0 ; } private

Continue reading on Dev.to Webdev

Opens in a new tab

Read Full Article
6 views

Related Articles