8000 Simplify and rename · symfony/symfony@b125c9d · GitHub
[go: up one dir, main page]

Skip to content

Commit b125c9d

Browse files
Simplify and rename
1 parent 41c0b2f commit b125c9d

File tree

8 files changed

+73
-152
lines changed

8 files changed

+73
-152
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
use Symfony\Component\Messenger\Handler\BatchHandlerInterface;
113113
use Symfony\Component\Messenger\MessageBus;
114114
use Symfony\Component\Messenger\MessageBusInterface;
115-
use Symfony\Component\Messenger\Middleware\LockMiddleware;
115+
use Symfony\Component\Messenger\Middleware\DeduplicateMiddleware;
116116
use Symfony\Component\Messenger\Middleware\RouterContextMiddleware;
117117
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
118118
use Symfony\Component\Messenger\Transport\TransportFactoryInterface as MessengerTransportFactoryInterface;
@@ -2176,10 +2176,10 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
2176 8000 2176
],
21772177
];
21782178

2179-
if (class_exists(LockMiddleware::class) && class_exists(LockFactory::class)) {
2180-
$defaultMiddleware['before'][] = ['id' => 'lock_middleware'];
2179+
if (class_exists(DeduplicateMiddleware::class) && class_exists(LockFactory::class)) {
2180+
$defaultMiddleware['before'][] = ['id' => 'deduplicate_middleware'];
21812181
} else {
2182-
$container->removeDefinition('messenger.middleware.lock_middleware');
2182+
$container->removeDefinition('messenger.middleware.deduplicate_middleware');
21832183
}
21842184

21852185
foreach ($config['buses'] as $busId => $bus) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
use Symfony\Component\Messenger\EventListener\StopWorkerOnRestartSignalListener;
2626
use Symfony\Component\Messenger\Handler\RedispatchMessageHandler;
2727
use Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware;
28+
use Symfony\Component\Messenger\Middleware\DeduplicateMiddleware;
2829
use Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware;
2930
use Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware;
3031
use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware;
31-
use Symfony\Component\Messenger\Middleware\LockMiddleware;
3232
use Symfony\Component\Messenger\Middleware\RejectRedeliveredMessageMiddleware;
3333
use Symfony\Component\Messenger\Middleware\RouterContextMiddleware;
3434
use Symfony\Component\Messenger\Middleware\SendMessageMiddleware;
@@ -87,7 +87,7 @@
8787
->tag('monolog.logger', ['channel' => 'messenger'])
8888
->call('setLogger', [service('logger')->ignoreOnInvalid()])
8989

90-
->set('messenger.middleware.lock_middleware', LockMiddleware::class)
90+
->set('messenger.middleware.deduplicate_middleware', DeduplicateMiddleware::class)
9191
->args([
9292
service('lock.factory'),
9393
])

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
use Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpTransportFactory;
6464
use Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\BeanstalkdTransportFactory;
6565
use Symfony\Component\Messenger\Bridge\Redis\Transport\RedisTransportFactory;
66-
use Symfony\Component\Messenger\Middleware\LockMiddleware;
66+
use Symfony\Component\Messenger\Middleware\DeduplicateMiddleware;
6767
use Symfony\Component\Messenger\Transport\TransportFactory;
6868
use Symfony\Component\Notifier\ChatterInterface;
6969
use Symfony\Component\Notifier\TexterInterface;
@@ -1066,13 +1066,13 @@ public function testMessengerWithMultipleBuses()
10661066
$this->assertTrue($container->has('messenger.bus.commands'));
10671067
$this->assertSame([], $container->getDefinition('messenger.bus.commands')->getArgument(0));
10681068

1069-
if (class_exists(LockMiddleware::class)) {
1069+
if (class_exists(DeduplicateMiddleware::class)) {
10701070
$this->assertEquals([
10711071
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.commands']],
10721072
['id' => 'reject_redelivered_message_middleware'],
10731073
['id' => 'dispatch_after_current_bus'],
10741074
['id' => 'failed_message_processing_middleware'],
1075-
['id' => 'lock_middleware'],
1075+
['id' => 'deduplicate_middleware'],
10761076
['id' => 'send_message', 'arguments' => [true]],
10771077
['id' => 'handle_message', 'arguments' => [false]],
10781078
], $container->getParameter('messenger.bus.commands.middleware'));
@@ -1090,13 +1090,13 @@ public function testMessengerWithMultipleBuses()
10901090
$this->assertTrue($container->has('messenger.bus.events'));
10911091
$this->assertSame([], $container->getDefinition('messenger.bus.events')->getArgument(0));
10921092

1093-
if (class_exists(LockMiddleware::class)) {
1093+
if (class_exists(DeduplicateMiddleware::class)) {
10941094
$this->assertEquals([
10951095
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.events']],
10961096
['id' => 'reject_redelivered_message_middleware'],
10971097
['id' => 'dispatch_after_current_bus'],
10981098
['id' => 'failed_message_processing_middleware'],
1099-
['id' => 'lock_middleware'],
1099+
['id' => 'deduplicate_middleware'],
11001100
['id' => 'with_factory', 'arguments' => ['foo', true, ['bar' => 'baz']]],
11011101
['id' => 'send_message', 'arguments' => [true]],
11021102
['id' => 'handle_message', 'arguments' => [false]],

src/Symfony/Component/Messenger/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ CHANGELOG
44
7.2
55
---
66

7-
* Add `Symfony\Component\Messenger\Middleware\LockMiddleware` and `Symfony\Component\Messenger\Stamp\LockStamp`
7+
* Add `Symfony\Component\Messenger\Middleware\DeduplicateMiddleware` and `Symfony\Component\Messenger\Stamp\DeduplicateStamp`
88
* Add `$previous` to the exception output at the `messenger:failed:show` command
99
* `WrappedExceptionsInterface` now extends PHP's `Throwable` interface
1010
* Add `#[AsMessage]` attribute with `$transport` parameter for message routing

src/Symfony/Component/Messenger/Middleware/LockMiddleware.php renamed to src/Symfony/Component/Messenger/Middleware/DeduplicateMiddleware.php

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,50 +13,35 @@
1313

1414
use Symfony\Component\Lock\LockFactory;
1515
use Symfony\Component\Messenger\Envelope;
16-
use Symfony\Component\Messenger\Stamp\LockStamp;
16+
use Symfony\Component\Messenger\Stamp\DeduplicateStamp;
1717
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
1818

19-
final class LockMiddleware implements MiddlewareInterface
19+
final class DeduplicateMiddleware implements MiddlewareInterface
2020
{
2121
public function __construct(private LockFactory $lockFactory)
2222
{
2323
}
2424

2525
public function handle(Envelope $envelope, StackInterface $stack): Envelope
2626
{
27-
if (!$stamp = $envelope->last(LockStamp::class)) {
27+
if (!$stamp = $envelope->last(DeduplicateStamp::class)) {
2828
return $stack->next()->handle($envelope, $stack);
2929
}
3030

3131
if (!$envelope->last(ReceivedStamp::class)) {
32-
if ($stamp->shouldLockOnDispatch()) {
33-
$lock = $this->lockFactory->createLockFromKey($stamp->getKey(), $stamp->getTtl(), autoRelease: false);
34-
35-
if ($stamp->shouldDiscard()) {
36-
if (!$lock->acquire()) {
37-
return $envelope;
38-
}
39-
} else {
40-
$lock->acquire(true);
41-
}
42-
}
43-
} elseif ($stamp->shouldLockOnReception()) {
4432
$lock = $this->lockFactory->createLockFromKey($stamp->getKey(), $stamp->getTtl(), autoRelease: false);
45-
if ($stamp->shouldDiscard()) {
46-
if (!$lock->acquire()) {
47-
return $envelope;
48-
}
49-
} else {
50-
$lock->acquire(true);
33+
34+
if (!$lock->acquire()) {
35+
return $envelope;
5136
}
52-
} elseif ($stamp->shouldReleaseLockOnReception()) {
37+
} elseif ($stamp->onlyDeduplicateInQueue()) {
5338
$this->lockFactory->createLockFromKey($stamp->getKey())->release();
5439
}
5540

5641
try {
5742
$envelope = $stack->next()->handle($envelope, $stack);
5843
} finally {
59-
if ($envelope->last(ReceivedStamp::class) && !$stamp->shouldReleaseLockOnReception()) {
44+
if ($envelope->last(ReceivedStamp::class) && !$stamp->onlyDeduplicateInQueue()) {
6045
$this->lockFactory->createLockFromKey($stamp->getKey())->release();
6146
}
6247
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\Messenger\Stamp;
13+
14+
use Symfony\Component\Lock\Key;
15+
16+
final class DeduplicateStamp implements StampInterface
17+
{
18+
private Key $key;
19+
20+
public function __construct(
21+
string $key,
22+
private ?float $ttl = 300.0,
23+
private bool $onlyDeduplicateInQueue = false,
24+
) {
25+
$this->key = new Key($key);
26+
}
27+
28+
public function onlyDeduplicateInQueue(): bool
29+
{
30+
return $this->onlyDeduplicateInQueue;
31+
}
32+
33+
public function getKey(): Key
34+
{
35+
return $this->key;
36+
}
37+
38+
public function getTtl(): ?float
39+
{
40+
return $this->ttl;
41+
}
42+
}

src/Symfony/Component/Messenger/Stamp/LockStamp.php

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

src/Symfony/Component/Messenger/Tests/Middleware/LockMiddlewareTest.php renamed to src/Symfony/Component/Messenger/Tests/Middleware/DeduplicateMiddlewareTest.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,45 +15,45 @@
1515
use Symfony\Component\Lock\Store\FlockStore;
1616
use Symfony\Component\Lock\Store\SemaphoreStore;
1717
use Symfony\Component\Messenger\Envelope;
18-
use Symfony\Component\Messenger\Middleware\LockMiddleware;
19-
use Symfony\Component\Messenger\Stamp\LockStamp;
18+
use Symfony\Component\Messenger\Middleware\DeduplicateMiddleware;
19+
use Symfony\Component\Messenger\Stamp\DeduplicateStamp;
2020
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
2121
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
2222
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
2323

24-
final class LockMiddlewareTest extends MiddlewareTestCase
24+
final class DeduplicateMiddlewareTest extends MiddlewareTestCase
2525
{
26-
public function testLockMiddlewareIgnoreIfMessageIsNotLockable()
26+
public function testDeduplicateMiddlewareIgnoreIfMessageIsNotLockable()
2727
{
2828
$message = new DummyMessage('Hello');
2929
$envelope = new Envelope($message);
3030

3131
$lockFactory = $this->createMock(LockFactory::class);
3232
$lockFactory->expects($this->never())->method('createLock');
3333

34-
$decorator = new LockMiddleware($lockFactory);
34+
$decorator = new DeduplicateMiddleware($lockFactory);
3535

3636
$decorator->handle($envelope, $this->getStackMock(true));
3737
}
3838

39-
public function testLockMiddlewareIfMessageHasKey()
39+
public function testDeduplicateMiddlewareIfMessageHasKey()
4040
{
4141
$message = new DummyMessage('Hello');
42-
$envelope = new Envelope($message, [new LockStamp(LockStamp::MODE_DISCARD_DUPLICATE_IN_QUEUE, 'id')]);
42+
$envelope = new Envelope($message, [new DeduplicateStamp('id')]);
4343

4444
if (SemaphoreStore::isSupported()) {
4545
$store = new SemaphoreStore();
4646
} else {
4747
$store = new FlockStore();
4848
}
4949

50-
$decorator = new LockMiddleware(new LockFactory($store));
50+
$decorator = new DeduplicateMiddleware(new LockFactory($store));
5151

5252
$envelope = $decorator->handle($envelope, $this->getStackMock(true));
53-
$this->assertNotNull($envelope->last(LockStamp::class));
53+
$this->assertNotNull($envelope->last(DeduplicateStamp::class));
5454

5555
$message2 = new DummyMessage('Hello');
56-
$envelope2 = new Envelope($message2, [new LockStamp(LockStamp::MODE_DISCARD_DUPLICATE_IN_QUEUE, 'id')]);
56+
$envelope2 = new Envelope($message2, [new DeduplicateStamp('id')]);
5757

5858
$decorator->handle($envelope2, $this->getStackMock(false));
5959

@@ -62,7 +62,7 @@ public function testLockMiddlewareIfMessageHasKey()
6262
$decorator->handle($envelope, $this->getStackMock(true));
6363

6464
$message3 = new DummyMessage('Hello');
65-
$envelope3 = new Envelope($message3, [new LockStamp(LockStamp::MODE_DISCARD_DUPLICATE_IN_QUEUE, 'id')]);
6 4B37 5+
$envelope3 = new Envelope($message3, [new DeduplicateStamp('id')]);
6666
$decorator->handle($envelope3, $this->getStackMock(true));
6767
}
6868
}

0 commit comments

Comments
 (0)
0