Dispatching Events into queues. This is especially useful for distributed systems events using fanout queues.
- Install the package
composer require acdphp/laravel-queued-events
-
Extend
QueuedEvent
to your event.use Acdphp\QueuedEvents\Events\QueuedEvent; class UserCreatedEvent extends QueuedEvent { // Remove the Dispatchable trait public function __construct(public $object) { } }
-
Call
dispatch()
UserCreatedEvent::dispatch(['foo' => 'bar']);
- You may specify a queue connection and queue:
UserCreatedEvent::dispatch(['foo' => 'bar']) ->onConnection('your-fanout-queue-connection') ->onQueue('your-custom-queue');
- Utilities are also available:
dispatchIf()
,dispatchUnless()
// Dispatches if $condition is true UserCreatedEvent::dispatchIf($condition, ['foo' => 'bar']); // Dispatches if $condition is false UserCreatedEvent::dispatchUnless($condition, ['foo' => 'bar']);
-
Default dispatch methods are prefixed with
internal
UserCreatedEvent::internalDispatch(['foo' => 'bar']); UserCreatedEvent::internalDispatchIf(['foo' => 'bar']); UserCreatedEvent::internalDispatchUnless(['foo' => 'bar']);
php artisan vendor:publish --tag=queued-events-config
The default queue connection will be whatever your QUEUE_CONNECTION
is set. You may override this by setting QUEUED_EVENTS_QUEUE_CONNECTION
The default queue will be default
. You may override this by setting QUEUED_EVENTS_QUEUE
- Using Laravel helpers, like
event(...)
orapp('events')->dispatch(...)
, will dispatch the job internally. Only use::dispatch
,::dispatchIf
and::dispatchUnless
to dispatch on queue. - Use Laravel's queued listener if you're only using this in a monolithic application.
The MIT License (MIT). Please see License File for more information.