@@ -1775,27 +1775,18 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17751775 $ container ->setAlias ('messenger.default_serializer ' , $ config ['serializer ' ]['default_serializer ' ]);
17761776 }
17771777
1778- $ senderReferences = [];
1779- $ syncTransports = [];
1778+ $ senderAliases = [];
17801779 $ transportRetryReferences = [];
17811780 foreach ($ config ['transports ' ] as $ name => $ transport ) {
17821781 $ serializerId = $ transport ['serializer ' ] ?? 'messenger.default_serializer ' ;
17831782
1784- if (0 === strpos ($ transport ['dsn ' ], 'sync:// ' )) {
1785- $ syncTransports [] = $ name ;
1786- } else {
1787- $ transportDefinition = (new Definition (TransportInterface::class))
1788- ->setFactory ([new Reference ('messenger.transport_factory ' ), 'createTransport ' ])
1789- ->setArguments ([$ transport ['dsn ' ], $ transport ['options ' ] + ['transport_name ' => $ name ], new Reference ($ serializerId )])
1790- ->addTag ('messenger.receiver ' , ['alias ' => $ name ])
1791- ;
1792- $ container ->setDefinition ($ transportId = 'messenger.transport. ' .$ name , $ transportDefinition );
1793-
1794- // alias => service_id
1795- $ senderReferences [$ name ] = new Reference ($ transportId );
1796- // service_id => service_id
1797- $ senderReferences [$ transportId ] = new Reference ($ transportId );
1798- }
1783+ $ transportDefinition = (new Definition (TransportInterface::class))
1784+ ->setFactory ([new Reference ('messenger.transport_factory ' ), 'createTransport ' ])
1785+ ->setArguments ([$ transport ['dsn ' ], $ transport ['options ' ] + ['transport_name ' => $ name ], new Reference ($ serializerId )])
1786+ ->addTag ('messenger.receiver ' , ['alias ' => $ name ])
1787+ ;
1788+ $ container ->setDefinition ($ transportId = 'messenger.transport. ' .$ name , $ transportDefinition );
1789+ $ senderAliases [$ name ] = $ transportId ;
17991790
18001791 if (null !== $ transport ['retry_strategy ' ]['service ' ]) {
18011792 $ transportRetryReferences [$ name ] = new Reference ($ transport ['retry_strategy ' ]['service ' ]);
@@ -1813,25 +1804,30 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
18131804 }
18141805 }
18151806
1807+ $ senderReferences = [];
1808+ // alias => service_id
1809+ foreach ($ senderAliases as $ alias => $ serviceId ) {
1810+ $ senderReferences [$ alias ] = new Reference ($ serviceId );
1811+ }
1812+ // service_id => service_id
1813+ foreach ($ senderAliases as $ serviceId ) {
1814+ $ senderReferences [$ serviceId ] = new Reference ($ serviceId );
1815+ }
1816+
18161817 $ messageToSendersMapping = [];
18171818 foreach ($ config ['routing ' ] as $ message => $ messageConfiguration ) {
18181819 if ('* ' !== $ message && !class_exists ($ message ) && !interface_exists ($ message , false )) {
18191820 throw new LogicException (sprintf ('Invalid Messenger routing configuration: class or interface "%s" not found. ' , $ message ));
18201821 }
18211822
1822- // filter out "sync" senders
1823- $ realSenders = [];
1823+ // make sure senderAliases contains all senders
18241824 foreach ($ messageConfiguration ['senders ' ] as $ sender ) {
1825- if (isset ($ senderReferences [$ sender ])) {
1826- $ realSenders [] = $ sender ;
1827- } elseif (!\in_array ($ sender , $ syncTransports , true )) {
1825+ if (!isset ($ senderReferences [$ sender ])) {
18281826 throw new LogicException (sprintf ('Invalid Messenger routing configuration: the "%s" class is being routed to a sender called "%s". This is not a valid transport or service id. ' , $ message , $ sender ));
18291827 }
18301828 }
18311829
1832- if ($ realSenders ) {
1833- $ messageToSendersMapping [$ message ] = $ realSenders ;
1834- }
1830+ $ messageToSendersMapping [$ message ] = $ messageConfiguration ['senders ' ];
18351831 }
18361832
18371833 $ container ->getDefinition ('messenger.senders_locator ' )
0 commit comments