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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy