Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 2b1da0d

Browse filesBrowse files
Simplify and rename
1 parent 41c0b2f commit 2b1da0d
Copy full SHA for 2b1da0d

File tree

8 files changed

+73
-152
lines changed
Filter options

8 files changed

+73
-152
lines changed

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

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+4-4
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
21762176
],
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

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php
+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
use Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware;
2929
use Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware;
3030
use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware;
31-
use Symfony\Component\Messenger\Middleware\LockMiddleware;
31+
use Symfony\Component\Messenger\Middleware\DeduplicateMiddleware;
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

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
+5-5
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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/CHANGELOG.md
+1-1
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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Middleware/DeduplicateMiddleware.php
+8-23
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
}
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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Stamp/LockStamp.php
-106
This file was deleted.

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/Middleware/DeduplicateMiddlewareTest.php
+11-11
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')]);
65+
$envelope3 = new Envelope($message3, [new DeduplicateStamp('id')]);
6666
$decorator->handle($envelope3, $this->getStackMock(true));
6767
}
6868
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.