Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f3e56f0

Browse files
committed
reset connections in worker
1 parent 4665a32 commit f3e56f0

File tree

5 files changed

+26
-78
lines changed

5 files changed

+26
-78
lines changed

src/Symfony/Component/Messenger/Event/WorkerStoppedEvent.php

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,14 @@
2121
final class WorkerStoppedEvent
2222
{
2323
private $worker;
24-
private $receivers;
2524

26-
public function __construct(Worker $worker, array $receivers)
25+
public function __construct(Worker $worker)
2726
{
28-
$this->receivers = $receivers;
2927
$this->worker = $worker;
3028
}
3129

3230
public function getWorker(): Worker
3331
{
3432
return $this->worker;
3533
}
36-
37-
public function getReceivers()
38-
{
39-
return $this->receivers;
40-
}
4134
}

src/Symfony/Component/Messenger/EventListener/ResetConnectionOnWorkerStopListener.php

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/Symfony/Component/Messenger/Tests/EventListener/ResetConnectionOnWorkerStopListenerTest.php

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/Symfony/Component/Messenger/Tests/WorkerTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
3030
use Symfony\Component\Messenger\Worker;
3131
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
32+
use Symfony\Contracts\Service\ResetInterface;
3233

3334
/**
3435
* @group time-sensitive
@@ -86,6 +87,18 @@ public function testHandlingErrorCausesReject()
8687
}
8788

8889
public function testWorkerDoesNotSendNullMessagesToTheBus()
90+
{
91+
$resettableReceiver = $this->createMock(ResetInterface::class);
92+
$resettableReceiver->expects($this->once())->method('reset');
93+
94+
$bus = $this->createMock(MessageBusInterface::class);
95+
$dispatcher = new EventDispatcher();
96+
97+
$worker = new Worker([$resettableReceiver], $bus, $dispatcher);
98+
$worker->run();
99+
}
100+
101+
public function testWorkerResetsConnectionIfReceiverIsResettable()
89102
{
90103
$receiver = new DummyReceiver([
91104
null,

src/Symfony/Component/Messenger/Worker.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
2626
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
2727
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
28+
use Symfony\Contracts\Service\ResetInterface;
2829

2930
/**
3031
* @author Samuel Roze <[email protected]>
@@ -101,7 +102,8 @@ public function run(array $options = []): void
101102
}
102103
}
103104

104-
$this->dispatchEvent(new WorkerStoppedEvent($this, $this->receivers));
105+
$this->dispatchEvent(new WorkerStoppedEvent($this));
106+
$this->resetReceiverConnections();
105107
}
106108

107109
private function handleMessage(Envelope $envelope, ReceiverInterface $receiver, string $transportName): void
@@ -155,6 +157,15 @@ public function stop(): void
155157
$this->shouldStop = true;
156158
}
157159

160+
private function resetReceiverConnections(): void
161+
{
162+
foreach ($this->receivers as $transportName => $receiver) {
163+
if ($receiver instanceof ResetInterface) {
164+
$receiver->reset();
165+
}
166+
}
167+
}
168+
158169
private function dispatchEvent($event)
159170
{
160171
if (null === $this->eventDispatcher) {

0 commit comments

Comments
 (0)