8000 [Messenger] remove send_and_handle option which can be achieved with … · symfony/symfony@9006497 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9006497

Browse files
committed
[Messenger] remove send_and_handle option which can be achieved with SyncTransport
1 parent 4f290d7 commit 9006497

File tree

12 files changed

+20
-84
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,7 +1125,6 @@ private function addMessengerSection(ArrayNodeDefinition $rootNode)
11251125
if (!\is_int($k)) {
11261126
$newConfig[$k] = [
11271127
'senders' => $v['senders'] ?? (\is_array($v) ? array_values($v) : [$v]),
1128-
'send_and_handle' => $v['send_and_handle'] ?? false,
11291128
];
11301129
} else {
11311130
$newConfig[$v['message-class']]['senders'] = array_map(
@@ -1134,7 +1133,6 @@ function ($a) {
11341133
},
11351134
array_values($v['sender'])
11361135
);
1137-
$newConfig[$v['message-class']]['send-and-handle'] = $v['send-and-handle'] ?? false;
11381136
}
11391137
}
11401138

@@ -1147,7 +1145,6 @@ function ($a) {
11471145
->requiresAtLeastOneElement()
11481146
->prototype('scalar')->end()
11491147
->end()
1150-
->booleanNode('send_and_handle')->defaultFalse()->end()
11511148
->end()
11521149
->end()
11531150
->end()

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,7 +1744,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17441744
}
17451745

17461746
$messageToSendersMapping = [];
1747-
$messagesToSendAndHandle = [];
17481747
foreach ($config['routing'] as $message => $messageConfiguration) {
17491748
if ('*' !== $message && !class_exists($message) && !interface_exists($message, false)) {
17501749
throw new LogicException(sprintf('Invalid Messenger routing configuration: class or interface "%s" not found.', $message));
@@ -1758,7 +1757,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17581757
}
17591758

17601759
$messageToSendersMapping[$message] = $messageConfiguration['senders'];
1761-
$messagesToSendAndHandle[$message] = $messageConfiguration['send_and_handle'];
17621760
}
17631761

17641762
$senderReferences = [];
@@ -1769,7 +1767,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17691767
$container->getDefinition('messenger.senders_locator')
17701768
->replaceArgument(0, $messageToSendersMapping)
17711769
->replaceArgument(1, ServiceLocatorTagPass::register($container, $senderReferences))
1772-
->replaceArgument(2, $messagesToSendAndHandle)
17731770
;
17741771

17751772
$container->getDefinition('messenger.retry_strategy_locator')

src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
<service id="messenger.senders_locator" class="Symfony\Component\Messenger\Transport\Sender\SendersLocator">
1212
<argument type="collection" /> <!-- Per message senders map -->
1313
<argument /> <!-- senders locator -->
14-
<argument type="collection" /> <!-- Messages to send and handle -->
1514
</service>
1615
<service id="messenger.middleware.send_message" class="Symfony\Component\Messenger\Middleware\SendMessageMiddleware">
1716
<tag name="monolog.logger" channel="messenger" />

src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,6 @@
434434
<xsd:element name="sender" type="messenger_routing_sender" />
435435
</xsd:choice>
436436
<xsd:attribute name="message-class" type="xsd:string" use="required"/>
437-
<xsd:attribute name="send-and-handle" type="xsd:boolean" default="false"/>
438437
</xsd:complexType>
439438

440439
<xsd:complexType name="messenger_routing_sender">

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_routing.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage' => ['amqp', 'audit'],
1111
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage' => [
1212
'senders' => ['amqp', 'audit'],
13-
'send_and_handle' => true,
1413
],
1514
'*' => 'amqp',
1615
],

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_routing.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<framework:sender service="amqp" />
1414
<framework:sender service="audit" />
1515
</framework:routing>
16-
<framework:routing message-class="Symfony\Component\Messenger\Tests\Fixtures\SecondMessage" send-and-handle="true">
16+
<framework:routing message-class="Symfony\Component\Messenger\Tests\Fixtures\SecondMessage">
1717
<framework:sender service="amqp" />
1818
<framework:sender service="audit" />
1919
</framework:routing>

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_routing.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ framework:
77
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage': [amqp, audit]
88
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage':
99
senders: [amqp, audit]
10-
send_and_handle: true
1110
'*': amqp
1211
transports:
1312
amqp: 'amqp://localhost/%2f/messages'

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -715,13 +715,6 @@ public function testMessengerRouting()
715715
$container = $this->createContainerFromFile('messenger_routing');
716716
$senderLocatorDefinition = $container->getDefinition('messenger.senders_locator');
717717

718-
$messageToSendAndHandleMapping = [
719-
DummyMessage::class => false,
720-
SecondMessage::class => true,
721-
'*' => false,
722-
];
723-
724-
$this->assertSame($messageToSendAndHandleMapping, $senderLocatorDefinition->getArgument(2));
725718
$sendersMapping = $senderLocatorDefinition->getArgument(0);
726719
$this->assertEquals([
727720
'amqp',

src/Symfony/Component/Messenger/Middleware/SendMessageMiddleware.php

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
5252
'class' => \get_class($envelope->getMessage()),
5353
];
5454

55-
$handle = false;
5655
$sender = null;
5756

5857
try {
@@ -65,7 +64,7 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
6564

6665
// dispatch event unless this is a redelivery
6766
$shouldDispatchEvent = null === $redeliveryStamp;
68-
foreach ($this->getSenders($envelope, $handle, $redeliveryStamp) as $alias => $sender) {
67+
foreach ($this->getSenders($envelope, $redeliveryStamp) as $alias => $sender) {
6968
if (null !== $this->eventDispatcher && $shouldDispatchEvent) {
7069
$event = new SendMessageToTransportsEvent($envelope);
7170
$this->eventDispatcher->dispatch($event);
@@ -76,14 +75,9 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
7675
$this->logger->info('Sending message "{class}" with "{sender}"', $context + ['sender' => \get_class($sender)]);
7776
$envelope = $sender->send($envelope->with(new SentStamp(\get_class($sender), \is_string($alias) ? $alias : null)));
7877
}
79-
80-
// on a redelivery, only send back to queue: never call local handlers
81-
if (null !== $redeliveryStamp) {
82-
$handle = false;
83-
}
8478
}
85 F438 79

86-
if (null === $sender || $handle) {
80+
if (null === $sender) {
8781
return $stack->next()->handle($envelope, $stack);
8882
}
8983
} catch (\Throwable $e) {
@@ -100,14 +94,14 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
10094
/**
10195
* * @return iterable|SenderInterface[]
10296
*/
103-
private function getSenders(Envelope $envelope, &$handle, ?RedeliveryStamp $redeliveryStamp): iterable
97+
private function getSenders(Envelope $envelope, ?RedeliveryStamp $redeliveryStamp): iterable
10498
{
10599
if (null !== $redeliveryStamp) {
106100
return [
107101
$redeliveryStamp->getSenderClassOrAlias() => $this->sendersLocator->getSenderByAlias($redeliveryStamp->getSenderClassOrAlias()),
108102
];
109103
}
110104

111-
return $this->sendersLocator->getSenders($envelope, $handle);
105+
return $this->sendersLocator->getSenders($envelope);
112106
}
113107
}

src/Symfony/Component/Messenger/Tests/Middleware/SendMessageMiddlewareTest.php

Lines changed: 12 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,7 @@ public function testItSendsToOnlyOneSenderOnRedelivery()
9292

9393
$sendersLocator = $this->createSendersLocator(
9494
[DummyMessage::class => ['foo', 'bar']],
95-
['foo' => $sender, 'bar' => $sender2],
96-
[
97-
// normally, this class sends and handles (but not on retry)
98-
DummyMessage::class => true,
99-
]
95+
['foo' => $sender, 'bar' => $sender2]
10096
);
10197

10298
$middleware = new SendMessageMiddleware($sendersLocator);
@@ -126,68 +122,46 @@ public function testItSendsTheMessageToAssignedSenderWithPreWrappedMessage()
126122
$middleware->handle($envelope, $this->getStackMock(false));
127123
}
128124

129-
public function testItAlsoCallsTheNextMiddlewareBasedOnTheMessageClass()
130-
{
131-
$message = new DummyMessage('Hey');
132-
$envelope = new Envelope($message);
133-
$sender = $this->getMockBuilder(SenderInterface::class)->getMock();
134-
135-
$sendersLocator = $this->createSendersLocator(['*' => ['foo_sender']], ['foo_sender' => $sender], [
136-
DummyMessage::class => true,
137-
]);
138-
$middleware = new SendMessageMiddleware($sendersLocator);
139-
140-
$sender->expects($this->once())->method('send')->with($envelope->with(new SentStamp(\get_class($sender), 'foo_sender')))->willReturn($envelope);
141-
142-
$middleware->handle($envelope, $this->getStackMock());
143-
}
144-
145-
public function testItAlsoCallsTheNextMiddlewareBasedOnTheMessageParentClass()
125+
public function testItSendsTheMessageBasedOnTheMessageParentClass()
146126
{
147127
$message = new ChildDummyMessage('Hey');
148128
$envelope = new Envelope($message);
149129
$sender = $this->getMockBuilder(SenderInterface::class)->getMock();
150130

151-
$sendersLocator = $this->createSendersLocator(['*' => ['foo_sender']], ['foo_sender' => $sender], [
152-
DummyMessage::class => true,
153-
]);
131+
$sendersLocator = $this->createSendersLocator([DummyMessage::class => ['foo_sender']], ['foo_sender' => $sender]);
154132
$middleware = new SendMessageMiddleware($sendersLocator);
155133

156134
$sender->expects($this->once())->method('send')->with($envelope->with(new SentStamp(\get_class($sender), 'foo_sender')))->willReturn($envelope);
157135

158-
$middleware->handle($envelope, $this->getStackMock());
136+
$middleware->handle($envelope, $this->getStackMock(false));
159137
}
160138

161-
public function testItAlsoCallsTheNextMiddlewareBasedOnTheMessageInterface()
139+
public function testItSendsTheMessageBasedOnTheMessageInterface()
162140
{
163141
$message = new DummyMessage('Hey');
164142
$envelope = new Envelope($message);
165143
$sender = $this->getMockBuilder(SenderInterface::class)->getMock();
166144

167-
$sendersLocator = $this->createSendersLocator(['*' => ['foo_sender']], ['foo_sender' => $sender], [
168-
DummyMessageInterface::class => true,
169-
]);
145+
$sendersLocator = $this->createSendersLocator([DummyMessageInterface::class => ['foo_sender']], ['foo_sender' => $sender]);
170146
$middleware = new SendMessageMiddleware($sendersLocator);
171147

172148
$sender->expects($this->once())->method('send')->with($envelope->with(new SentStamp(\get_class($sender), 'foo_sender')))->willReturn($envelope);
173149

174-
$middleware->handle($envelope, $this->getStackMock());
150+
$middleware->handle($envelope, $this->getStackMock(false));
175151
}
176152

177-
public function testItAlsoCallsTheNextMiddlewareBasedOnWildcard()
153+
public function testItSendsTheMessageBasedOnWildcard()
178154
{
179155
$message = new DummyMessage('Hey');
180156
$envelope = new Envelope($message);
181157
$sender = $this->getMockBuilder(SenderInterface::class)->getMock();
182158

183-
$sendersLocator = $this->createSendersLocator(['*' => ['foo_sender']], ['foo_sender' => $sender], [
184-
'*' => true,
185-
]);
159+
$sendersLocator = $this->createSendersLocator(['*' => ['foo_sender']], ['foo_sender' => $sender]);
186160
$middleware = new SendMessageMiddleware($sendersLocator);
187161

188162
$sender->expects($this->once())->method('send')->with($envelope->with(new SentStamp(\get_class($sender), 'foo_sender')))->willReturn($envelope);
189163

190-
$middleware->handle($envelope, $this->getStackMock());
164+
$middleware->handle($envelope, $this->getStackMock(false));
191165
}
192166

193167
public function testItCallsTheNextMiddlewareWhenNoSenderForThisMessage()
@@ -267,7 +241,7 @@ public function testItDoesNotDispatchOnRedeliver()
267241
$middleware->handle($envelope, $this->getStackMock(false));
268242
}
269243

270-
private function createSendersLocator(array $sendersMap, array $senders, array $sendAndHandle = [])
244+
private function createSendersLocator(array $sendersMap, array $senders)
271245
{
272246
$container = $this->createMock(ContainerInterface::class);
273247
$container->expects($this->any())
@@ -281,6 +255,6 @@ private function createSendersLocator(array $sendersMap, array $senders, array $
281255
return $senders[$id];
282256
});
283257

284-
return new SendersLocator($sendersMap, $container, $sendAndHandle);
258+
return new SendersLocator($sendersMap, $container);
285259
}
286260
}

src/Symfony/Component/Messenger/Transport/Sender/SendersLocator.php

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,36 +30,30 @@ class SendersLocator implements SendersLocatorInterface
3030
private $sendersMap;
3131
private $sendersLocator;
3232
private $useLegacyLookup = false;
33-
private $sendAndHandle;
3433

3534
/**
3635
* @param string[][] $sendersMap An array, keyed by "type", set to an array of sender aliases
3736
* @param ContainerInterface $sendersLocator Locator of senders, keyed by sender alias
38-
* @param bool[] $sendAndHandle
3937
*/
40-
public function __construct(array $sendersMap, /*ContainerInterface*/ $sendersLocator = null, array $sendAndHandle = [])
38+
public function __construct(array $sendersMap, /*ContainerInterface*/ $sendersLocator = null)
4139
{
4240
$this->sendersMap = $sendersMap;
4341

4442
if (\is_array($sendersLocator) || null === $sendersLocator) {
4543
@trigger_error(sprintf('"%s::__construct()" requires a "%s" as 2nd argument. Not doing so is deprecated since Symfony 4.3 and will be required in 5.0.', __CLASS__, ContainerInterface::class), E_USER_DEPRECATED);
4644
// "%s" requires a "%s" as 2nd argument. Not doing so is deprecated since Symfony 4.3 and will be required in 5.0.'
4745
$this->sendersLocator = new ServiceLocator([]);
48-
$this->sendAndHandle = $sendersLocator;
4946
$this->useLegacyLookup = true;
5047
} else {
5148
$this->sendersLocator = $sendersLocator;
52-
$this->sendAndHandle = $sendAndHandle;
5349
}
5450
}
5551

5652
/**
5753
* {@inheritdoc}
5854
*/
59-
public function getSenders(Envelope $envelope, ?bool &$handle = false): iterable
55+
public function getSenders(Envelope $envelope): iterable
6056
{
61-
$handle = false;
62-
$sender = null;
6357
$seen = [];
6458

6559
foreach (HandlersLocator::listTypes($envelope) as $type) {
@@ -71,8 +65,6 @@ public function getSenders(Envelope $envelope, ?bool &$handle = false): iterable
7165
}
7266
}
7367

74-
$handle = $handle ?: $this->sendAndHandle[$type] ?? false;
75-
7668
continue;
7769
}
7870

@@ -87,11 +79,7 @@ public function getSenders(Envelope $envelope, ?bool &$handle = false): iterable
8779
yield $senderAlias => $sender;
8880
}
8981
}
90-
91-
$handle = $handle ?: $this->sendAndHandle[$type] ?? false;
9282
}
93-
94-
$handle = $handle || null === $sender;
9583
}
9684

9785
public function getSenderByAlias(string $alias): SenderInterface

src/Symfony/Component/Messenger/Transport/Sender/SendersLocatorInterface.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,9 @@ interface SendersLocatorInterface
2727
/**
2828
* Gets the senders for the given message name.
2929
*
30-
* @param bool|null &$handle True after calling the method when the next middleware
31-
* should also get the message; false otherwise
32-
*
3330
* @return iterable|SenderInterface[] Indexed by sender alias if available
3431
*/
35-
public function getSenders(Envelope $envelope, ?bool &$handle = false): iterable;
32+
public function getSenders(Envelope $envelope): iterable;
3633

3734
/**
3835
* Returns a specific sender by its alias.

0 commit comments

Comments
 (0)
0