Skip to content

Latest commit

 

History

History
43 lines (30 loc) · 1 KB

bus.md

File metadata and controls

43 lines (30 loc) · 1 KB

Queue event bus

You can publish events from base events bus and you can push events in queue and publish it in later.

use GpsLab\Domain\Event\Bus\QueueEventBus;
use GpsLab\Domain\Event\Queue\Pull\MemoryPullEventQueue;

// queue storing events in memory
$queue = MemoryPullEventQueue();

$bus = new QueueBus($queue);

Do what you need to do on your Domain

$purchase_order = new PurchaseOrder(new Customer(1));

// push events to queue
$bus->pullAndPublish($purchase_order);

In later you can pull events from queue

use GpsLab\Domain\Event\Bus\ListenerLocatedEventBus;
use GpsLab\Domain\Event\Listener\Locator\DirectBindingEventListenerLocator;

// event listener locator
$locator = new DirectBindingEventListenerLocator();

// base events bus
$publisher_bus = new ListenerLocatedEventBus($locator);

// publish events from queue
while ($event = $queue->pull()) {
    $publisher_bus->publish($event);
}

You can use Subscribe queue for optimization.