|
81 | 81 | useSymfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkTransportFactory; |
82 | 82 | useSymfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridTransportFactory; |
83 | 83 | useSymfony\Component\Mailer\Mailer; |
| 84 | +useSymfony\Component\Messenger\Command\FailedMessagesRetryCommand; |
| 85 | +useSymfony\Component\Messenger\EventListener\SendFailedMessageToFailureTransportListener; |
84 | 86 | useSymfony\Component\Messenger\Handler\MessageHandlerInterface; |
85 | 87 | useSymfony\Component\Messenger\MessageBus; |
86 | 88 | useSymfony\Component\Messenger\MessageBusInterface; |
@@ -1701,25 +1703,46 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder |
1701 | 1703 | $container->getDefinition('messenger.retry_strategy_locator') |
1702 | 1704 | ->replaceArgument(0,$transportRetryReferences); |
1703 | 1705 |
|
| 1706 | +$failureTransports = []; |
1704 | 1707 | if ($config['failure_transport']) { |
1705 | 1708 | if (!isset($senderReferences[$config['failure_transport']])) { |
1706 | 1709 | thrownewLogicException(sprintf('Invalid Messenger configuration: the failure transport "%s" is not a valid transport or service id.',$config['failure_transport'])); |
1707 | 1710 | } |
1708 | 1711 |
|
| 1712 | +$transports =array_keys($config['transports']); |
| 1713 | +$numberOfTransports =count($transports); |
| 1714 | +$failureTransports =array_combine($transports,array_fill(0,$numberOfTransports,$senderReferences[$config['failure_transport']])); |
| 1715 | + |
1709 | 1716 | $container->getDefinition('messenger.failure.send_failed_message_to_failure_transport_listener') |
1710 | | - ->replaceArgument(0,$senderReferences[$config['failure_transport']]); |
| 1717 | + ->replaceArgument(0,$failureTransports); |
1711 | 1718 | $container->getDefinition('console.command.messenger_failed_messages_retry') |
1712 | 1719 | ->replaceArgument(0,$config['failure_transport']); |
1713 | 1720 | $container->getDefinition('console.command.messenger_failed_messages_show') |
1714 | 1721 | ->replaceArgument(0,$config['failure_transport']); |
1715 | 1722 | $container->getDefinition('console.command.messenger_failed_messages_remove') |
1716 | 1723 | ->replaceArgument(0,$config['failure_transport']); |
1717 | 1724 | }else { |
1718 | | -$container->removeDefinition('messenger.failure.send_failed_message_to_failure_transport_listener'); |
1719 | 1725 | $container->removeDefinition('console.command.messenger_failed_messages_retry'); |
1720 | 1726 | $container->removeDefinition('console.command.messenger_failed_messages_show'); |
1721 | 1727 | $container->removeDefinition('console.command.messenger_failed_messages_remove'); |
1722 | 1728 | } |
| 1729 | + |
| 1730 | +foreach ($config['transports']as$name =>$transport) { |
| 1731 | +if ($transport['failure_transport']) { |
| 1732 | +if (!isset($config['transports'][$transport['failure_transport']])) { |
| 1733 | +thrownewLogicException(sprintf('Invalid Messenger configuration: the failure transport "%s" is not a valid transport or service id.',$transport['failure_transport'])); |
| 1734 | + } |
| 1735 | + |
| 1736 | +$failureTransports[$name] =$senderReferences[$transport['failure_transport']]; |
| 1737 | + } |
| 1738 | + } |
| 1739 | + |
| 1740 | +if (!empty($failureTransports)) { |
| 1741 | +$container->getDefinition('messenger.failure.send_failed_message_to_failure_transport_listener') |
| 1742 | + ->replaceArgument(0,$failureTransports); |
| 1743 | + }else { |
| 1744 | +$container->removeDefinition('messenger.failure.send_failed_message_to_failure_transport_listener'); |
| 1745 | + } |
1723 | 1746 | } |
1724 | 1747 |
|
1725 | 1748 | privatefunctionregisterCacheConfiguration(array$config,ContainerBuilder$container) |
|