Circuit Breaker in durable mailboxes
The durable mailboxes has error handling that reconnects on every failure. Add circuit breaker that can be used for all durable mailboxes to improve stability.
Leave a comment
(In revision:a35cc848df0c22f85d8d9604ab73528f05459c42) CircuitBreaker proposal with Future. See #1734
Branch: wip-1734-circuit-breaker-patriknw
Branch: wip-1734-circuit-breaker-patriknw
on 2012-05-24 11:48 *
By Patrik Nordwall
Brian is completing the final pieces. Only documentation left.
https://github.com/akka/akka/pull/466
https://github.com/akka/akka/pull/466
(In revision:6a415f0e9bf915a366e36ab0bc6d4cb43cb3f15e) * Add Circuit Breaker to akka.pattern for general use. Circuit breaker implementation as described by Michael T. Nygard in Release It!. Fixes #1734
Branch: master
- Uses finite state machine for three states: Closed, Open, Half-Open
- Closed state allows calls through, and on sequential failures exceeding the max# set - transitions to Open state. Intervening successes cause the failure count to reset to 0
- Open state throws a CircuitOpenException on every call until the reset timeout is reached which causes a transition to Half-Open state
- Half-Open state will allow the next single call through, if it succeeds - transition to Closed state, if it fails - transition back to Open state, starting the reset timer again
- Allow configuration for the call and reset timeouts, as well as the maximum number of sequential failures before opening
- Supports async or synchronous call protection
- Callbacks are supported for state entry into Closed, Open, Half-Open. These are run in the supplied execution context
- Both thrown exceptions and calls exceeding max call time are considered failures
- Uses akka scheduler for timer events
- Integrated into File-Based durable mailbox
- Sample documented for other durable mailboxes
Branch: master
on 2012-06-01 15:33 *
By Patrik Nordwall
Great work Brian.
/Patrik
/Patrik
(In revision:6a415f0e9bf915a366e36ab0bc6d4cb43cb3f15e) * Add Circuit Breaker to akka.pattern for general use. Circuit breaker implementation as described by Michael T. Nygard in Release It!. Fixes #1734
Branch: wip-2134-deathwatch2.0-√
- Uses finite state machine for three states: Closed, Open, Half-Open
- Closed state allows calls through, and on sequential failures exceeding the max# set - transitions to Open state. Intervening successes cause the failure count to reset to 0
- Open state throws a CircuitOpenException on every call until the reset timeout is reached which causes a transition to Half-Open state
- Half-Open state will allow the next single call through, if it succeeds - transition to Closed state, if it fails - transition back to Open state, starting the reset timer again
- Allow configuration for the call and reset timeouts, as well as the maximum number of sequential failures before opening
- Supports async or synchronous call protection
- Callbacks are supported for state entry into Closed, Open, Half-Open. These are run in the supplied execution context
- Both thrown exceptions and calls exceeding max call time are considered failures
- Uses akka scheduler for timer events
- Integrated into File-Based durable mailbox
- Sample documented for other durable mailboxes
Branch: wip-2134-deathwatch2.0-√
Updating tickets (#520, #852, #857, #874, #935, #950, #1364, #1508, #1542, #1559, #1734, #1744, #1755, #1782, #1812, #1824, #1831, #1858, #1871, #1880, #1886, #1892, #1896, #1899, #1929, #1930, #1950, #1952, #1953, #1962, #1966, #1969, #1972, #1973, #1977, #1978, #1986, #1988, #1993, #1999, #2000, #2003, #2005, #2006, #2015, #2016, #2019, #2021, #2022, #2023, #2024, #2025, #2029, #2031, #2032, #2036, #2046, #2048, #2051, #2055, #2059, #2061, #2062, #2064, #2065, #2068, #2072, #2074, #2076, #2078, #2079, #2085, #2087, #2088, #2089, #2090, #2091, #2092, #2093, #2095, #2098, #2099, #2100, #2101, #2102, #2119, #2129, #2134, #2135, #2136, #2144, #2147, #2148, #2156, #2166, #2168, #2172, #2174, #2178, #2183)