_usedProperties['dsn'] = true; $this->dsn = $value; return $this; } /** * Service id of a custom serializer to use. * @default null * @param ParamConfigurator|mixed $value * @return $this */ public function serializer($value): static { $this->_usedProperties['serializer'] = true; $this->serializer = $value; return $this; } /** * @param ParamConfigurator|list $value * * @return $this */ public function options(ParamConfigurator|array $value): static { $this->_usedProperties['options'] = true; $this->options = $value; return $this; } /** * Transport name to send failed messages to (after all retries have failed). * @default null * @param ParamConfigurator|mixed $value * @return $this */ public function failureTransport($value): static { $this->_usedProperties['failureTransport'] = true; $this->failureTransport = $value; return $this; } /** * @template TValue * @param TValue $value * @default {"service":null,"max_retries":3,"delay":1000,"multiplier":2,"max_delay":0,"jitter":0.1} * @return \Symfony\Config\Framework\Messenger\TransportConfig\RetryStrategyConfig|$this * @psalm-return (TValue is array ? \Symfony\Config\Framework\Messenger\TransportConfig\RetryStrategyConfig : static) */ public function retryStrategy(mixed $value = []): \Symfony\Config\Framework\Messenger\TransportConfig\RetryStrategyConfig|static { if (!\is_array($value)) { $this->_usedProperties['retryStrategy'] = true; $this->retryStrategy = $value; return $this; } if (!$this->retryStrategy instanceof \Symfony\Config\Framework\Messenger\TransportConfig\RetryStrategyConfig) { $this->_usedProperties['retryStrategy'] = true; $this->retryStrategy = new \Symfony\Config\Framework\Messenger\TransportConfig\RetryStrategyConfig($value); } elseif (0 < \func_num_args()) { throw new InvalidConfigurationException('The node created by "retryStrategy()" has already been initialized. You cannot pass values the second time you call retryStrategy().'); } return $this->retryStrategy; } /** * Rate limiter name to use when processing messages. * @default null * @param ParamConfigurator|mixed $value * @return $this */ public function rateLimiter($value): static { $this->_usedProperties['rateLimiter'] = true; $this->rateLimiter = $value; return $this; } public function __construct(array $value = []) { if (array_key_exists('dsn', $value)) { $this->_usedProperties['dsn'] = true; $this->dsn = $value['dsn']; unset($value['dsn']); } if (array_key_exists('serializer', $value)) { $this->_usedProperties['serializer'] = true; $this->serializer = $value['serializer']; unset($value['serializer']); } if (array_key_exists('options', $value)) { $this->_usedProperties['options'] = true; $this->options = $value['options']; unset($value['options']); } if (array_key_exists('failure_transport', $value)) { $this->_usedProperties['failureTransport'] = true; $this->failureTransport = $value['failure_transport']; unset($value['failure_transport']); } if (array_key_exists('retry_strategy', $value)) { $this->_usedProperties['retryStrategy'] = true; $this->retryStrategy = \is_array($value['retry_strategy']) ? new \Symfony\Config\Framework\Messenger\TransportConfig\RetryStrategyConfig($value['retry_strategy']) : $value['retry_strategy']; unset($value['retry_strategy']); } if (array_key_exists('rate_limiter', $value)) { $this->_usedProperties['rateLimiter'] = true; $this->rateLimiter = $value['rate_limiter']; unset($value['rate_limiter']); } if ([] !== $value) { throw new InvalidConfigurationException(sprintf('The following keys are not supported by "%s": ', __CLASS__).implode(', ', array_keys($value))); } } public function toArray(): array { $output = []; if (isset($this->_usedProperties['dsn'])) { $output['dsn'] = $this->dsn; } if (isset($this->_usedProperties['serializer'])) { $output['serializer'] = $this->serializer; } if (isset($this->_usedProperties['options'])) { $output['options'] = $this->options; } if (isset($this->_usedProperties['failureTransport'])) { $output['failure_transport'] = $this->failureTransport; } if (isset($this->_usedProperties['retryStrategy'])) { $output['retry_strategy'] = $this->retryStrategy instanceof \Symfony\Config\Framework\Messenger\TransportConfig\RetryStrategyConfig ? $this->retryStrategy->toArray() : $this->retryStrategy; } if (isset($this->_usedProperties['rateLimiter'])) { $output['rate_limiter'] = $this->rateLimiter; } return $output; } }