vendor/sroze/messenger-enqueue-transport/EnvelopeItem/TransportConfiguration.php line 24

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Enqueue\MessengerAdapter\EnvelopeItem;
  11. use Enqueue\AmqpTools\DelayStrategy;
  12. use Symfony\Component\Messenger\Stamp\StampInterface;
  13. /**
  14.  * Message envelope item allowing to specify some transport configuration.
  15.  *
  16.  * @author       Thomas Prelot <tprelot@gmail.com>
  17.  *
  18.  * @experimental in 4.1
  19.  */
  20. final class TransportConfiguration implements StampInterface\Serializable
  21. {
  22.     private $topic;
  23.     private $metadata = array();
  24.     public function __construct(array $configuration = array())
  25.     {
  26.         $this->topic $configuration['topic'] ?? null;
  27.         $this->metadata $configuration['metadata'] ?? array();
  28.     }
  29.     /**
  30.      * Get topic name.
  31.      */
  32.     public function getTopic(): ?string
  33.     {
  34.         return $this->topic;
  35.     }
  36.     /**
  37.      * Retrieve metadata information for decorating
  38.      * concrete implementations of Interop\Queue\Message.
  39.      */
  40.     public function getMetadata(): array
  41.     {
  42.         return $this->metadata;
  43.     }
  44.     public function setTopic($topic): self
  45.     {
  46.         $this->topic $topic;
  47.         return $this;
  48.     }
  49.     public function setMetadata(array $metadata): self
  50.     {
  51.         $this->metadata $metadata;
  52.         return $this;
  53.     }
  54.     public function addMetadata(string $key$value): self
  55.     {
  56.         $this->metadata[$key] = $value;
  57.         return $this;
  58.     }
  59.     public function setPriority(int $priority null): self
  60.     {
  61.         $this->metadata['priority'] = $priority;
  62.         return $this;
  63.     }
  64.     public function setDeliveryDelay(int $deliveryDelay null): self
  65.     {
  66.         $this->metadata['deliveryDelay'] = $deliveryDelay;
  67.         return $this;
  68.     }
  69.     public function setDelayStrategy(DelayStrategy $delayStrategy null): self
  70.     {
  71.         $this->metadata['delayStrategy'] = $delayStrategy;
  72.         return $this;
  73.     }
  74.     public function setTimeToLive(int $timeToLive null): self
  75.     {
  76.         $this->metadata['timeToLive'] = $timeToLive;
  77.         return $this;
  78.     }
  79.     public function serialize()
  80.     {
  81.         return serialize(array(
  82.             'topic' => $this->topic,
  83.             'metadata' => $this->metadata,
  84.         ));
  85.     }
  86.     public function unserialize($serialized)
  87.     {
  88.         list(
  89.             'topic' => $topic,
  90.             'metadata' => $metadata
  91.         ) = unserialize($serialized, array('allowed_classes' => false));
  92.         $this->__construct(array(
  93.             'topic' => $topic,
  94.             'metadata' => $metadata,
  95.         ));
  96.     }
  97. }