Skip to content

Commit 9ccb1d8

Browse files
committed
Move back to using receive(): iterator based on the feedback
1 parent 0f76918 commit 9ccb1d8

File tree

4 files changed

+24
-13
lines changed

4 files changed

+24
-13
lines changed

src/Symfony/Component/Message/Asynchronous/Transport/WrapIntoReceivedMessage.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,19 @@ public function __construct(ReceiverInterface $decoratedConsumer)
2525
$this->decoratedReceiver = $decoratedConsumer;
2626
}
2727

28-
public function receive(): \Generator
28+
public function receive(): iterable
2929
{
30-
$generator = $this->decoratedReceiver->receive();
30+
$iterator = $this->decoratedReceiver->receive();
3131

32-
foreach ($generator as $message) {
32+
foreach ($iterator as $message) {
3333
try {
3434
yield new ReceivedMessage($message);
3535
} catch (\Throwable $e) {
36-
$generator->throw($e);
36+
if (!$iterator instanceof \Generator) {
37+
throw $e;
38+
}
39+
40+
$iterator->throw($e);
3741
}
3842
}
3943
}

src/Symfony/Component/Message/Transport/Enhancers/MaximumCountReceiver.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,20 @@ public function __construct(ReceiverInterface $decoratedReceiver, int $maximumNu
2424
$this->maximumNumberOfMessages = $maximumNumberOfMessages;
2525
}
2626

27-
public function receive(): \Generator
27+
public function receive(): iterable
2828
{
29-
$generator = $this->decoratedReceiver->receive();
29+
$iterator = $this->decoratedReceiver->receive();
3030
$receivedMessages = 0;
3131

32-
foreach ($generator as $message) {
32+
foreach ($iterator as $message) {
3333
try {
3434
yield $message;
3535
} catch (\Throwable $e) {
36-
$generator->throw($e);
36+
if (!$iterator instanceof \Generator) {
37+
throw $e;
38+
}
39+
40+
$iterator->throw($e);
3741
}
3842

3943
if (++$receivedMessages > $this->maximumNumberOfMessages) {

src/Symfony/Component/Message/Transport/ReceiverInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@
1616
*/
1717
interface ReceiverInterface
1818
{
19-
public function receive(): \Generator;
19+
public function receive(): iterable;
2020
}

src/Symfony/Component/Message/Worker.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,21 @@ public function __construct(ReceiverInterface $receiver, MessageBusInterface $bu
3333
*/
3434
public function run()
3535
{
36-
$messageGenerator = $this->receiver->receive();
36+
$iterator = $this->receiver->receive();
3737

38-
foreach ($messageGenerator as $message) {
38+
foreach ($iterator as $message) {
3939
if (!$message instanceof ReceivedMessage) {
4040
$message = new ReceivedMessage($message);
4141
}
4242

4343
try {
4444
$this->bus->dispatch($message);
4545
} catch (\Throwable $e) {
46-
// Return the exception to the message generator so it can properly handle it if needed.
47-
$messageGenerator->throw($e);
46+
if (!$iterator instanceof \Generator) {
47+
throw $e;
48+
}
49+
50+
$iterator->throw($e);
4851
}
4952
}
5053
}

0 commit comments

Comments
 (0)