|
77 | 77 | use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
|
78 | 78 | use Symfony\Component\Messenger\MessageBus;
|
79 | 79 | use Symfony\Component\Messenger\MessageBusInterface;
|
80 |
| -use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; |
81 | 80 | use Symfony\Component\Messenger\Transport\TransportFactoryInterface;
|
82 | 81 | use Symfony\Component\Messenger\Transport\TransportInterface;
|
83 | 82 | use Symfony\Component\Mime\MimeTypeGuesserInterface;
|
@@ -1592,28 +1591,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
|
1592 | 1591 |
|
1593 | 1592 | $loader->load('messenger.xml');
|
1594 | 1593 |
|
1595 |
| - if (empty($config['transports'])) { |
1596 |
| - $container->removeDefinition('messenger.transport.symfony_serializer'); |
1597 |
| - $container->removeDefinition('messenger.transport.amqp.factory'); |
1598 |
| - } else { |
1599 |
| - if ('messenger.transport.symfony_serializer' === $config['serializer']['id']) { |
1600 |
| - if (!$this->isConfigEnabled($container, $serializerConfig)) { |
1601 |
| - throw new LogicException('The Messenger serializer cannot be enabled as the Serializer support is not available. Try enabling it or running "composer require symfony/serializer-pack".'); |
1602 |
| - } |
1603 |
| - |
1604 |
| - $container->getDefinition('messenger.transport.symfony_serializer') |
1605 |
| - ->replaceArgument(1, $config['serializer']['format']) |
1606 |
| - ->replaceArgument(2, $config['serializer']['context']); |
1607 |
| - } |
1608 |
| - |
1609 |
| - if ($config['serializer']['id']) { |
1610 |
| - $container->setAlias('messenger.transport.serializer', $config['serializer']['id']); |
1611 |
| - } else { |
1612 |
| - $container->removeDefinition('messenger.transport.amqp.factory'); |
1613 |
| - $container->removeDefinition(SerializerInterface::class); |
1614 |
| - } |
1615 |
| - } |
1616 |
| - |
1617 | 1594 | if (null === $config['default_bus'] && 1 === \count($config['buses'])) {
|
1618 | 1595 | $config['default_bus'] = key($config['buses']);
|
1619 | 1596 | }
|
@@ -1665,16 +1642,27 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
|
1665 | 1642 | }
|
1666 | 1643 | }
|
1667 | 1644 |
|
| 1645 | + if (empty($config['transports'])) { |
| 1646 | + $container->removeDefinition('messenger.transport.symfony_serializer'); |
| 1647 | + $container->removeDefinition('messenger.transport.amqp.factory'); |
| 1648 | + } else { |
| 1649 | + $container->getDefinition('messenger.transport.symfony_serializer') |
| 1650 | + ->replaceArgument(1, $config['serializer']['format']) |
| 1651 | + ->replaceArgument(2, $config['serializer']['context']); |
| 1652 | + $container->setAlias('messenger.transport.serializer', $config['serializer']['id']); |
| 1653 | + } |
| 1654 | + |
1668 | 1655 | $senderAliases = [];
|
1669 | 1656 | $transportRetryReferences = [];
|
1670 | 1657 | foreach ($config['transports'] as $name => $transport) {
|
1671 |
| - if (0 === strpos($transport['dsn'], 'amqp://') && !$container->hasDefinition('messenger.transport.amqp.factory')) { |
1672 |
| - throw new LogicException('The default AMQP transport is not available. Make sure you have installed and enabled the Serializer component. Try enabling it or running "composer require symfony/serializer-pack".'); |
| 1658 | + if (null !== $transport['serializer']) { |
| 1659 | + $transport['options']['serializer'] = new Reference($transport['serializer']); |
1673 | 1660 | }
|
| 1661 | + $serializerId = null !== $transport['serializer'] ? $transport['serializer'] : 'messenger.transport.serializer'; |
1674 | 1662 |
|
1675 | 1663 | $transportDefinition = (new Definition(TransportInterface::class))
|
1676 | 1664 | ->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])
|
1677 |
| - ->setArguments([$transport['dsn'], $transport['options']]) |
| 1665 | + ->setArguments([$transport['dsn'], $transport['options'], new Reference($serializerId )]) |
1678 | 1666 | ->addTag('messenger.receiver', ['alias' => $name])
|
1679 | 1667 | ;
|
1680 | 1668 | $container->setDefinition($transportId = 'messenger.transport.'.$name, $transportDefinition);
|
|
0 commit comments