Pact Messenger Bundle [![Build Status][actionsbadge]][actionslink] [![Coverage Status][coverallsbadge]][coverallslink] [![Version][version-image]][version-url] [![PHP Version][php-version-image]][php-version-url]
March 28, 2024 ยท View on GitHub
This Symfony Bundle allow collecting dispatched message using Symfony Messenger.
Installation
composer require tienvx/pact-messenger-bundle
Documentation
namespace App\MessageDispatcher;
use App\Message\UserCreated;
use Tienvx\Bundle\PactMessengerBundle\Service\EnvelopeCollectorInterface;
use Tienvx\Bundle\PactProviderBundle\Attribute\AsMessageDispatcher;
use Tienvx\Bundle\PactProviderBundle\Model\Message;
use Tienvx\Bundle\PactProviderBundle\MessageDispatcher\DispatcherInterface;
#[AsMessageDispatcher(description: 'User created message')]
class UserDispatcher implements DispatcherInterface
{
public function __construct(private EnvelopeCollectorInterface $collector)
{
}
public function dispatch(): ?Message
{
$envelope = $this->collector->getSingle(UserCreated::class);
if (!$envelope) {
return null;
}
$message = $envelope->getMessage();
if (!$message instanceof UserCreated) {
return null;
}
return new Message(
\json_encode([
'class' => UserCreated::class,
'id' => $message->userId,
]),
'application/json',
json_encode(['contentType' => 'application/json'])
);
}
}