PHP code example of eventsauce / doctrine-outbox-message-dispatcher
1. Go to this page and download the library: Download eventsauce/doctrine-outbox-message-dispatcher library. Choose the download type require. 2. Extract the ZIP file and open the index.php. 3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
eventsauce / doctrine-outbox-message-dispatcher example snippets
use EventSauce\DoctrineOutboxMessageDispatcher\DoctrineOutboxMessageDispatcher;
use EventSauce\DoctrineOutboxMessageDispatcher\MessagesInOutbox;
use EventSauce\EventSourcing\Serialization\ConstructingMessageSerializer;
use EventSauce\EventSourcing\SynchronousMessageDispatcher;
use EventSauce\EventSourcing\Time\SystemClock;
$dispatcher = new DoctrineOutboxMessageDispatcher(
$connection, // \Doctrine\DBAL\Connection instance
$clock = new SystemClock(),
$serializer = new ConstructingMessageSerializer(),
'your_table_name',
$optionalFlagsForJsonEncode = 0
);
// This dispatcher can be used like any other:
$dispatcher->dispatch($message);
// >>>>>>>>>>>>>>>>>>> //
// For re-dispatching: //
// >>>>>>>>>>>>>>>>>>> //
// Use your own type of dispatcher here:
$destinationDispatcher = new SynchronousMessageDispatcher();
// Retrieve not dispatched messages
/** @var MessagesInOutbox[] $messagesInOutbox */
$messagesInOutbox = $dispatcher->retrieveNotDispatchedMessages(100);
foreach ($messagesInOutbox as $messageInOutbox) {
// One message in the outbox can result in N number of messages to dispatch
$destinationDispatcher->dispatch(...iterator_to_array($messageInOutbox->messages()));
// Mark messages as dispatched
$dispatcher->markAsDispatched($messagesInOutbox);
// Mark messages as dispatched
$dispatcher->removeFromOutbox($messagesInOutbox);
}