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

Skip to content

Commit 32c5fb0

Browse files
committed
feature #50155 [Scheduler] add schedule name to MessageContext (kbond)
This PR was merged into the 6.3 branch. Discussion ---------- [Scheduler] add schedule name to `MessageContext` | Q | A | ------------- | --- | Branch? | 6.3 | Bug fix? | no | New feature? | yes | Deprecations? | no | Tickets | n/a | License | MIT | Doc PR | n/a Alternative to #49864. Commits ------- dc0f0e2 [Scheduler] add schedule name to `MessageContext`
2 parents 1f8c592 + dc0f0e2 commit 32c5fb0

File tree

4 files changed

+11
-13
lines changed

4 files changed

+11
-13
lines changed

src/Symfony/Component/Scheduler/Generator/MessageContext.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121
final class MessageContext
2222
{
2323
public function __construct(
24+
public readonly string $name,
2425
public readonly TriggerInterface $trigger,
2526
public readonly \DateTimeImmutable $triggeredAt,
26-
public readonly \DateTimeImmutable|null $nextTriggerAt = null,
27+
public readonly ?\DateTimeImmutable $nextTriggerAt = null,
2728
) {
2829
}
2930
}

src/Symfony/Component/Scheduler/Generator/MessageGenerator.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,12 @@ final class MessageGenerator implements MessageGeneratorInterface
2727

2828
public function __construct(
2929
private readonly Schedule $schedule,
30-
string|CheckpointInterface $checkpoint,
30+
private readonly string $name,
3131
private readonly ClockInterface $clock = new Clock(),
32+
CheckpointInterface $checkpoint = null,
3233
) {
3334
$this->waitUntil = new \DateTimeImmutable('@0');
34-
if (\is_string($checkpoint)) {
35-
$checkpoint = new Checkpoint('scheduler_checkpoint_'.$checkpoint, $this->schedule->getLock(), $this->schedule->getState());
36-
}
37-
$this->checkpoint = $checkpoint;
35+
$this->checkpoint = $checkpoint ?? new Checkpoint('scheduler_checkpoint_'.$this->name, $this->schedule->getLock(), $this->schedule->getState());
3836
}
3937

4038
public function getMessages(): \Generator
@@ -70,7 +68,7 @@ public function getMessages(): \Generator
7068
}
7169

7270
if ($yield) {
73-
yield (new MessageContext($trigger, $time, $nextTime)) => $message;
71+
yield (new MessageContext($this->name, $trigger, $time, $nextTime)) => $message;
7472
$this->checkpoint->save($time, $index);
7573
}
7674
}

src/Symfony/Component/Scheduler/Messenger/SchedulerTransportFactory.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
1818
use Symfony\Component\Messenger\Transport\TransportFactoryInterface;
1919
use Symfony\Component\Scheduler\Exception\InvalidArgumentException;
20-
use Symfony\Component\Scheduler\Generator\Checkpoint;
2120
use Symfony\Component\Scheduler\Generator\MessageGenerator;
2221
use Symfony\Component\Scheduler\Schedule;
2322

@@ -46,9 +45,8 @@ public function createTransport(string $dsn, array $options, SerializerInterface
4645

4746
/** @var Schedule $schedule */
4847
$schedule = $this->scheduleProviders->get($scheduleName)->getSchedule();
49-
$checkpoint = new Checkpoint('scheduler_checkpoint_'.$scheduleName, $schedule->getLock(), $schedule->getState());
5048

51-
return new SchedulerTransport(new MessageGenerator($schedule, $checkpoint, $this->clock));
49+
return new SchedulerTransport(new MessageGenerator($schedule, $scheduleName, $this->clock));
5250
}
5351

5452
public function supports(string $dsn, array $options): bool

src/Symfony/Component/Scheduler/Tests/Messenger/SchedulerTransportTest.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,16 @@ public function testGetFromIterator()
3434
$generator->method('getMessages')->willReturnCallback(function () use ($messages): \Generator {
3535
$trigger = $this->createMock(TriggerInterface::class);
3636
$triggerAt = new \DateTimeImmutable('2020-02-20T02:00:00', new \DateTimeZone('UTC'));
37-
yield (new MessageContext($trigger, $triggerAt)) => $messages[0];
38-
yield (new MessageContext($trigger, $triggerAt)) => $messages[1];
37+
yield (new MessageContext('default', $trigger, $triggerAt)) => $messages[0];
38+
yield (new MessageContext('default', $trigger, $triggerAt)) => $messages[1];
3939
});
4040
$transport = new SchedulerTransport($generator);
4141

4242
foreach ($transport->get() as $envelope) {
4343
$this->assertInstanceOf(Envelope::class, $envelope);
44-
$this->assertNotNull($envelope->last(ScheduledStamp::class));
44+
$this->assertNotNull($stamp = $envelope->last(ScheduledStamp::class));
4545
$this->assertSame(array_shift($messages), $envelope->getMessage());
46+
$this->assertSame('default', $stamp->messageContext->name);
4647
}
4748

4849
$this->assertEmpty($messages);

0 commit comments

Comments
 (0)