Events
The following are the events that the circuit breaker dispatches. These can, for instance, be used to create "service monitoring" logic.
Each of these events offer the following methods:
state(): Returns the circuit breaker's currentState.lastFailure(): Returns the last reportedFailureornull, if none available.
Both State and Failure are immutable objects. Please review Aedart\Contracts\Circuits\State and Aedart\Contracts\Circuits\Failure for additional information.
Has Closed
Aedart\Contracts\Circuits\Events\HasClosed is dispatched when state, is changed to Closed state (initial / success state).
Has Open
Aedart\Contracts\Circuits\Events\HasOpened is dispatched when state, is changed to Open state (circuit has tripped / failure state).
Has Half-Open
Aedart\Contracts\Circuits\Events\HasHalfOpened is dispatched when state, is changed to Half-Open state (intermediate state / recovery attempt state).
Failure Reported
Whenever a failure has been reported, Aedart\Contracts\Circuits\Events\FailureReported is dispatched. This event offers a failure() method. It guarantees to return a Failure object, that contains information about the reported failure.
use Aedart\Contracts\Circuits\Events\FailureReported;
class NotifyOnWhetherServiceFailure
{
public function handle(FailureReported $event)
{
$failure = $event->failure();
$reason = $failure->reason();
$failureTime = $failure->reportedAt();
$totalReportedFailures = $failure->totalFailures();
// Send notification about failure ... not shown here...
}
}