123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Messenger\Bridge\Redis\Transport;
- use Symfony\Component\Messenger\Envelope;
- use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
- use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
- use Symfony\Component\Messenger\Transport\SetupableTransportInterface;
- use Symfony\Component\Messenger\Transport\TransportInterface;
- /**
- * @author Alexander Schranz <alexander@sulu.io>
- * @author Antoine Bluchet <soyuka@gmail.com>
- */
- class RedisTransport implements TransportInterface, SetupableTransportInterface
- {
- private $serializer;
- private $connection;
- private $receiver;
- private $sender;
- public function __construct(Connection $connection, SerializerInterface $serializer = null)
- {
- $this->connection = $connection;
- $this->serializer = $serializer ?? new PhpSerializer();
- }
- /**
- * {@inheritdoc}
- */
- public function get(): iterable
- {
- return ($this->receiver ?? $this->getReceiver())->get();
- }
- /**
- * {@inheritdoc}
- */
- public function ack(Envelope $envelope): void
- {
- ($this->receiver ?? $this->getReceiver())->ack($envelope);
- }
- /**
- * {@inheritdoc}
- */
- public function reject(Envelope $envelope): void
- {
- ($this->receiver ?? $this->getReceiver())->reject($envelope);
- }
- /**
- * {@inheritdoc}
- */
- public function send(Envelope $envelope): Envelope
- {
- return ($this->sender ?? $this->getSender())->send($envelope);
- }
- /**
- * {@inheritdoc}
- */
- public function setup(): void
- {
- $this->connection->setup();
- }
- private function getReceiver(): RedisReceiver
- {
- return $this->receiver = new RedisReceiver($this->connection, $this->serializer);
- }
- private function getSender(): RedisSender
- {
- return $this->sender = new RedisSender($this->connection, $this->serializer);
- }
- }
- class_alias(RedisTransport::class, \Symfony\Component\Messenger\Transport\RedisExt\RedisTransport::class);
|