Skip to content
SpoolrailSpoolrail

Events

Spoolrail dispatches synchronous Laravel events while publishing messages and handing received messages to Laravel Queue.

Register the events you need in a service provider’s boot method:

<?php
namespace App\Providers;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\ServiceProvider;
use Spoolrail\Spoolrail\Events\MessageConsumed;
use Spoolrail\Spoolrail\Events\MessageConsuming;
use Spoolrail\Spoolrail\Events\MessageConsumptionFailed;
use Spoolrail\Spoolrail\Events\MessagePublicationFailed;
use Spoolrail\Spoolrail\Events\MessagePublished;
use Spoolrail\Spoolrail\Events\MessagePublishing;
use Spoolrail\Spoolrail\Events\MessageStaged;
use Spoolrail\Spoolrail\Events\MessageStaging;
use Spoolrail\Spoolrail\Events\MessageStagingFailed;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
/*
|--------------------------------------------------------------------------
| Storing a message for publication when the transactional outbox is enabled
|--------------------------------------------------------------------------
*/
Event::listen(function (MessageStaging $event): void {
// $event->connectionName
// $event->topic
// $event->message
// $event->headers
// $event->orderingKey
});
Event::listen(function (MessageStaged $event): void {
// $event->connectionName
// $event->topic
// $event->message
// $event->headers
// $event->orderingKey
// $event->outboxId
});
Event::listen(function (MessageStagingFailed $event): void {
// $event->connectionName
// $event->topic
// $event->message
// $event->headers
// $event->orderingKey
// $event->exception
});
/*
|--------------------------------------------------------------------------
| Publishing a message to a transport
|--------------------------------------------------------------------------
*/
Event::listen(function (MessagePublishing $event): void {
// $event->connectionName
// $event->topic
// $event->message
// $event->headers
// $event->orderingKey
});
Event::listen(function (MessagePublished $event): void {
// $event->connectionName
// $event->topic
// $event->message
// $event->headers
// $event->orderingKey
});
Event::listen(function (MessagePublicationFailed $event): void {
// $event->connectionName
// $event->topic
// $event->message
// $event->headers
// $event->orderingKey
// $event->exception
});
/*
|--------------------------------------------------------------------------
| Handing a received message to Laravel Queue
|--------------------------------------------------------------------------
*/
Event::listen(function (MessageConsuming $event): void {
// $event->message
// $event->message->transport?->connectionName
// $event->message->transport?->topic
// $event->message->transport?->subscription
// $event->message->transport?->headers
// $event->message->transport?->orderingKey
// $event->message->transport?->...
});
Event::listen(function (MessageConsumed $event): void {
// $event->message
// $event->message->transport?->connectionName
// $event->message->transport?->topic
// $event->message->transport?->subscription
// $event->message->transport?->headers
// $event->message->transport?->orderingKey
// $event->message->transport?->...
});
Event::listen(function (MessageConsumptionFailed $event): void {
// $event->message
// $event->message->transport?->connectionName
// $event->message->transport?->topic
// $event->message->transport?->subscription
// $event->message->transport?->headers
// $event->message->transport?->orderingKey
// $event->message->transport?->...
// $event->exception
});
}
}

Spoolrail’s consumption lifecycle ends when a job is pushed to Laravel Queue. Use Laravel’s Queue job events to observe the later handler-processing lifecycle, including execution, retries, and terminal failure.