|
78 | 78 | use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
|
79 | 79 | use Symfony\Component\Messenger\MessageBus;
|
80 | 80 | use Symfony\Component\Messenger\MessageBusInterface;
|
81 |
| -use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; |
82 | 81 | use Symfony\Component\Messenger\Transport\TransportFactoryInterface;
|
83 | 82 | use Symfony\Component\Messenger\Transport\TransportInterface;
|
84 | 83 | use Symfony\Component\Mime\MimeTypeGuesserInterface;
|
@@ -1604,28 +1603,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
|
1604 | 1603 |
|
1605 | 1604 | $loader->load('messenger.xml');
|
1606 | 1605 |
|
1607 |
| - if (empty($config['transports'])) { |
1608 |
| - $container->removeDefinition('messenger.transport.symfony_serializer'); |
1609 |
| - $container->removeDefinition('messenger.transport.amqp.factory'); |
1610 |
| - } else { |
1611 |
| - if ('messenger.transport.symfony_serializer' === $config['serializer']['id']) { |
1612 |
| - if (!$this->isConfigEnabled($container, $serializerConfig)) { |
1613 |
| - 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".'); |
1614 |
| - } |
1615 |
| - |
1616 |
| - $container->getDefinition('messenger.transport.symfony_serializer') |
1617 |
| - ->replaceArgument(1, $config['serializer']['format']) |
1618 |
| - ->replaceArgument(2, $config['serializer']['context']); |
1619 |
| - } |
1620 |
| - |
1621 |
| - if ($config['serializer']['id']) { |
1622 |
| - $container->setAlias('messenger.transport.serializer', $config['serializer']['id']); |
1623 |
| - } else { |
1624 |
| - $container->removeDefinition('messenger.transport.amqp.factory'); |
1625 |
| - $container->removeDefinition(SerializerInterface::class); |
1626 |
| - } |
1627 |
| - } |
1628 |
| - |
1629 | 1606 | if (null === $config['default_bus'] && 1 === \count($config['buses'])) {
|
1630 | 1607 | $config['default_bus'] = key($config['buses']);
|
1631 | 1608 | }
|
@@ -1677,16 +1654,24 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
|
1677 | 1654 | }
|
1678 | 1655 | }
|
1679 | 1656 |
|
| 1657 | + if (empty($config['transports'])) { |
| 1658 | + $container->removeDefinition('messenger.transport.symfony_serializer'); |
| 1659 | + $container->removeDefinition('messenger.transport.amqp.factory'); |
| 1660 | + } else { |
| 1661 | + $container->getDefinition('messenger.transport.symfony_serializer') |
| 1662 | + ->replaceArgument(1, $config['symfony_serializer']['format']) |
| 1663 | + ->replaceArgument(2, $config['symfony_serializer']['context']); |
| 1664 | + $container->setAlias('messenger.default_serializer', $config['default_serializer']); |
| 1665 | + } |
| 1666 | + |
1680 | 1667 | $senderAliases = [];
|
1681 | 1668 | $transportRetryReferences = [];
|
1682 | 1669 | foreach ($config['transports'] as $name => $transport) {
|
1683 |
| - if (0 === strpos($transport['dsn'], 'amqp://') && !$container->hasDefinition('messenger.transport.amqp.factory')) { |
1684 |
| - 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".'); |
1685 |
| - } |
| 1670 | + $serializerId = $transport['serializer'] ?? 'messenger.default_serializer'; |
1686 | 1671 |
|
1687 | 1672 | $transportDefinition = (new Definition(TransportInterface::class))
|
1688 | 1673 | ->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])
|
1689 |
| - ->setArguments([$transport['dsn'], $transport['options']]) |
| 1674 | + ->setArguments([$transport['dsn'], $transport['options'], new Reference($serializerId)]) |
1690 | 1675 | ->addTag('messenger.receiver', ['alias' => $name])
|
1691 | 1676 | ;
|
1692 | 1677 | $container->setDefinition($transportId = 'messenger.transport.'.$name, $transportDefinition);
|
|
0 commit comments