diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php index f71fcf34430bc..df247609653f3 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php @@ -135,6 +135,9 @@ ->tag('messenger.transport_factory') ->set('messenger.transport.in_memory.factory', InMemoryTransportFactory::class) + ->args([ + service('clock')->nullOnInvalid(), + ]) ->tag('messenger.transport_factory') ->tag('kernel.reset', ['method' => 'reset']) diff --git a/src/Symfony/Component/Messenger/CHANGELOG.md b/src/Symfony/Component/Messenger/CHANGELOG.md index 24cd1c9332e27..d52c990dd4281 100644 --- a/src/Symfony/Component/Messenger/CHANGELOG.md +++ b/src/Symfony/Component/Messenger/CHANGELOG.md @@ -4,6 +4,7 @@ CHANGELOG 7.1 --- + * `InMemoryTransportFactory` creates the `InMemoryTransport` with a clock (if configured in the factory) * Add option `redis_sentinel` as an alias for `sentinel_master` * Add `--all` option to the `messenger:consume` command * Add parameter `$jitter` to `MultiplierRetryStrategy` in order to randomize delay and prevent the thundering herd effect diff --git a/src/Symfony/Component/Messenger/Transport/InMemory/InMemoryTransportFactory.php b/src/Symfony/Component/Messenger/Transport/InMemory/InMemoryTransportFactory.php index 42e8ca9adc188..91e3ec4b5dcfb 100644 --- a/src/Symfony/Component/Messenger/Transport/InMemory/InMemoryTransportFactory.php +++ b/src/Symfony/Component/Messenger/Transport/InMemory/InMemoryTransportFactory.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Messenger\Transport\InMemory; +use Psr\Clock\ClockInterface; use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; use Symfony\Component\Messenger\Transport\TransportFactoryInterface; use Symfony\Component\Messenger\Transport\TransportInterface; @@ -28,11 +29,16 @@ class InMemoryTransportFactory implements TransportFactoryInterface, ResetInterf */ private array $createdTransports = []; + public function __construct( + private readonly ?ClockInterface $clock = null, + ) { + } + public function createTransport(string $dsn, array $options, SerializerInterface $serializer): TransportInterface { ['serialize' => $serialize] = $this->parseDsn($dsn); - return $this->createdTransports[] = new InMemoryTransport($serialize ? $serializer : null); + return $this->createdTransports[] = new InMemoryTransport($serialize ? $serializer : null, $this->clock); } public function supports(string $dsn, array $options): bool