if (''
!== ($this->connectionOptions
['confirm_timeout'
] ?? ''
)) { $this->
channel()->
waitForConfirm((float) $this->connectionOptions
['confirm_timeout'
]);
} } private function setupDelay(int
$delay, ?string
$routingKey, bool
$isRetryAttempt): void
{ if ($this->autoSetupDelayExchange
) { $this->
setupDelayExchange();
} $queue =
$this->
createDelayQueue($delay,
$routingKey,
$isRetryAttempt);
$queue->
declareQueue(); // the delay queue always need to be declared because the name is dynamic and cannot be declared in advance
$queue->
bind($this->connectionOptions
['delay'
]['exchange_name'
],
$this->
getRoutingKeyForDelay($delay,
$routingKey,
$isRetryAttempt));
} private function getDelayExchange(): \AMQPExchange
{ if (!
isset($this->amqpDelayExchange
)) { $this->amqpDelayExchange =
$this->amqpFactory->
createExchange($this->
channel());
$this->amqpDelayExchange->
setName($this->connectionOptions
['delay'
]['exchange_name'
]);
$this->amqpDelayExchange->
setType(\AMQP_EX_TYPE_DIRECT
);
$this->amqpDelayExchange->
setFlags(\AMQP_DURABLE
);
}