Better to use a circuit breaker which supports the following set of features:
- Automatically time-out calls that take longer than a defined threshold.
- Maintain a small thread-pool (or semaphore) for each dependency and if it becomes full reject commands immediately, rather than queueing them up.
- Trip a circuit-breaker automatically or manually to stop all requests to a service for a period of time if the error percentage passes a threshold.
- Perform fallback logic when a request fails, is rejected, timed-out or short-circuited.
Hystrix also provides the following features:
Measure successes and failures (exceptions thrown by the client), and timeouts.
- A dashboard to help diagnose issues.