@@ -1775,27 +1775,18 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
1775
1775
$ container ->setAlias ('messenger.default_serializer ' , $ config ['serializer ' ]['default_serializer ' ]);
1776
1776
}
1777
1777
1778
- $ senderReferences = [];
1779
- $ syncTransports = [];
1778
+ $ senderAliases = [];
1780
1779
$ transportRetryReferences = [];
1781
1780
foreach ($ config ['transports ' ] as $ name => $ transport ) {
1782
1781
$ serializerId = $ transport ['serializer ' ] ?? 'messenger.default_serializer ' ;
1783
1782
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 ;
1799
1790
1800
1791
if (null !== $ transport ['retry_strategy ' ]['service ' ]) {
1801
1792
$ transportRetryReferences [$ name ] = new Reference ($ transport ['retry_strategy ' ]['service ' ]);
@@ -1813,25 +1804,30 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
1813
1804
}
1814
1805
}
1815
1806
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
+
1816
1817
$ messageToSendersMapping = [];
1817
1818
foreach ($ config ['routing ' ] as $ message => $ messageConfiguration ) {
1818
1819
if ('* ' !== $ message && !class_exists ($ message ) && !interface_exists ($ message , false )) {
1819
1820
throw new LogicException (sprintf ('Invalid Messenger routing configuration: class or interface "%s" not found. ' , $ message ));
1820
1821
}
1821
1822
1822
- // filter out "sync" senders
1823
- $ realSenders = [];
1823
+ // make sure senderAliases contains all senders
1824
1824
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 ])) {
1828
1826
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 ));
1829
1827
}
1830
1828
}
1831
1829
1832
- if ($ realSenders ) {
1833
- $ messageToSendersMapping [$ message ] = $ realSenders ;
1834
- }
1830
+ $ messageToSendersMapping [$ message ] = $ messageConfiguration ['senders ' ];
1835
1831
}
1836
1832
1837
1833
$ container ->getDefinition ('messenger.senders_locator ' )
0 commit comments