Skip to content

Commit fb46e43

Browse files
feature #39688 [FrameworkBundle][Messenger] Added RouterContextMiddleware (jderusse)
This PR was merged into the 5.3-dev branch. Discussion ---------- [FrameworkBundle][Messenger] Added RouterContextMiddleware | Q | A | ------------- | --- | Branch? | 5.x | Bug fix? | no | New feature? | yes | Deprecations? | no | Tickets | - | License | MIT | Doc PR | TODO When handling a message in async, we, sometimes need the Router Context to generate absolute URL. ie: - sending an email when the message contains only the template - generating a PDF People can use the configuration `router.default_uri` to workaround and fix the issue, but this does not work when the web application servers several domains. This PR provide a new middleware that store the current router context in a stamp, and restore the context when processing the message. Commits ------- 8fe8b96921 [Messenger] Added RouterContextMiddleware
2 parents 4eecf0c + e9c95d6 commit fb46e43

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
9898
use Symfony\Component\Messenger\MessageBus;
9999
use Symfony\Component\Messenger\MessageBusInterface;
100+
use Symfony\Component\Messenger\Middleware\RouterContextMiddleware;
100101
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
101102
use Symfony\Component\Messenger\Transport\TransportFactoryInterface;
102103
use Symfony\Component\Messenger\Transport\TransportInterface;
@@ -944,9 +945,13 @@ private function registerRouterConfiguration(array $config, ContainerBuilder $co
944945
if (!$this->isConfigEnabled($container, $config)) {
945946
$container->removeDefinition('console.command.router_debug');
946947
$container->removeDefinition('console.command.router_match');
948+
$container->removeDefinition('messenger.middleware.router_context');
947949

948950
return;
949951
}
952+
if (!class_exists(RouterContextMiddleware::class)) {
953+
$container->removeDefinition('messenger.middleware.router_context');
954+
}
950955

951956
$loader->load('routing.php');
952957

Resources/config/messenger.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware;
2727
use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware;
2828
use Symfony\Component\Messenger\Middleware\RejectRedeliveredMessageMiddleware;
29+
use Symfony\Component\Messenger\Middleware\RouterContextMiddleware;
2930
use Symfony\Component\Messenger\Middleware\SendMessageMiddleware;
3031
use Symfony\Component\Messenger\Middleware\TraceableMiddleware;
3132
use Symfony\Component\Messenger\Middleware\ValidationMiddleware;
@@ -100,6 +101,11 @@
100101
service('debug.stopwatch'),
101102
])
102103

104+
->set('messenger.middleware.router_context', RouterContextMiddleware::class)
105+
->args([
106+
service('router'),
107+
])
108+
103109
// Discovery
104110
->set('messenger.receiver_locator')
105111
->args([

0 commit comments

Comments
 (0)