8000 feature #49734 [Messenger] Add a way to redispatch a message (fabpot) · symfony/symfony@a08ccfc · GitHub
[go: up one dir, main page]

Skip to content

Commit a08ccfc

Browse files
committed
feature #49734 [Messenger] Add a way to redispatch a message (fabpot)
This PR was merged into the 6.3 branch. Discussion ---------- [Messenger] Add a way to redispatch a message | Q | A | ------------- | --- | Branch? | 6.3 | Bug fix? | no | New feature? | yes <!-- please update src/**/CHANGELOG.md files --> | Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tickets | n/a | License | MIT | Doc PR | - This was part of the Scheduler PR, but was removed as it was controversial. Instead of having it by default in Scheduler, I've made it generic in Messenger. If one wants to use it with Scheduler, they can use this: ```php new RedispatchMessage($msg, 'async'); ``` Commits ------- 4c1dcfa [Messenger] Add a way to redispatch a message
2 parents d7abade + 4c1dcfa commit a08ccfc

File tree

4 files changed

+67
-0
lines changed

4 files changed

+67
-0
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
use Symfony\Component\Messenger\EventListener\StopWorkerOnCustomStopExceptionListener;
2525
use Symfony\Component\Messenger\EventListener\StopWorkerOnRestartSignalListener;
2626
use Symfony\Component\Messenger\EventListener\StopWorkerOnSignalsListener;
27+
use Symfony\Component\Messenger\Handler\RedispatchMessageHandler;
2728
use Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware;
2829
use Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware;
2930
use Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware;
@@ -219,5 +220,11 @@
219220
abstract_arg('message bus locator'),
220221
service('messenger.default_bus'),
221222
])
223+
224+
->set('messenger.redispatch_message_handler', RedispatchMessageHandler::class)
225+
->args([
226+
service('messenger.default_bus'),
227+
])
228+
->tag('messenger.message_handler')
222229
;
223230
};

src/Symfony/Component/Messenger/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ CHANGELOG
1414
* Deprecate `StopWorkerOnSigtermSignalListener` in favor of
1515
`StopWorkerOnSignalsListener` and make it configurable with SIGINT and
1616
SIGTERM by default
17+
* Add `RedispatchMessage` and `RedispatchMessageHandler`
1718

1819
6.2
1920
---
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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\Handler;
13+
14+
use Symfony\Component\Messenger\Message\RedispatchMessage;
15+
use Symfony\Component\Messenger\MessageBusInterface;
16+
use Symfony\Component\Messenger\Stamp\TransportNamesStamp;
17+
18+
final class RedispatchMessageHandler
19+
{
20+
public function __construct(
21+
private MessageBusInterface $bus,
22+
) {
23+
}
24+
25+
public function __invoke(RedispatchMessage $message)
26+
{
27+
$this->bus->dispatch($message->envelope, [new TransportNamesStamp($message->transportNames)]);
28+
}
29+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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\Message;
13+
14+
use Symfony\Component\Messenger\Envelope;
15+
16+
/**
17+
* @internal
18+
*/
19+
final class RedispatchMessage
20+
{
21+
/**
22+
* @param object|Envelope $message The message or the message pre-wrapped in an envelope
23+
* @param string[]|string $transportNames Transport names to be used for the message
24+
*/
25+
public function __construct(
26+
public readonly object $envelope,
27+
public readonly array|string $transportNames = [],
28+
) {
29+
}
30+
}

0 commit comments

Comments
 (0)
0