brzuchal/saga
Laravel package implementing the Saga pattern for coordinating long-running, distributed workflows. Helps model multi-step processes with compensating actions, track saga state, and handle failures/retries so complex business transactions stay consistent across services.
SagaStarted, SagaFailed), enabling observability and extensions.laravel/framework compatibility).$saga = new OrderSaga();
$saga->step(new ReserveInventory())
->step(new ChargeCustomer())
->step(new ShipOrder())
->onFailure([$this, 'refundAndReleaseInventory']);
'sagas' => [
'storage' => 'database', // or 'redis'
'table' => 'saga_states',
],
event(new SagaStarted($saga));
| Failure Type | Impact | Mitigation |
|---|---|---|
| Queue worker crash | Saga steps not processed. | Retry logic + dead-letter queue. |
| Compensation failure | Inconsistent state (e.g., charged but not shipped). | Idempotent compensations + alerts. |
| Database outage | Saga state lost. | Redis fallback + periodic backups. |
| Event publishing fail | Downstream services not notified. | Exponential backoff + DLQ. |
| Stuck saga | Resource leak (e.g., locked inventory). | Timeout + manual override. |
How can I help you explore Laravel packages today?