Skip to content

Commit ac8cafe

Browse files
d-phnicolas-grekas
authored andcommitted
Wire PostgreSqlNotifyOnIdleListener for doctrine-messenger
1 parent 746ac82 commit ac8cafe

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

config/messenger.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Symfony\Bridge\Doctrine\Messenger\DoctrinePingConnectionMiddleware;
1111
use Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddleware;
1212
use Symfony\Bridge\Doctrine\SchemaListener\MessengerTransportDoctrineSchemaListener;
13+
use Symfony\Component\Messenger\Bridge\Doctrine\EventListener\PostgreSqlNotifyOnIdleListener;
1314
use Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineTransportFactory;
1415

1516
return static function (ContainerConfigurator $container): void {
@@ -51,12 +52,19 @@
5152
->tag('messenger.transport_factory')
5253
->args([
5354
service('doctrine'),
55+
service('messenger.transport.doctrine.pg_notify_on_idle_listener')->ignoreOnInvalid(),
5456
])
5557

5658
->set('doctrine.orm.messenger.doctrine_schema_listener', MessengerTransportDoctrineSchemaListener::class)
5759
->args([
5860
tagged_iterator('messenger.receiver'),
5961
])
6062
->tag('doctrine.event_listener', ['event' => 'postGenerateSchema'])
61-
->tag('doctrine.event_listener', ['event' => 'onSchemaCreateTable']);
63+
->tag('doctrine.event_listener', ['event' => 'onSchemaCreateTable'])
64+
65+
->set('messenger.transport.doctrine.pg_notify_on_idle_listener', PostgreSqlNotifyOnIdleListener::class)
66+
->args([
67+
service('logger'),
68+
])
69+
->tag('kernel.event_subscriber');
6270
};

src/DependencyInjection/DoctrineExtension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
use Symfony\Component\DependencyInjection\Reference;
6363
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
6464
use Symfony\Component\Form\AbstractType;
65+
use Symfony\Component\Messenger\Bridge\Doctrine\EventListener\PostgreSqlNotifyOnIdleListener;
6566
use Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineTransportFactory;
6667
use Symfony\Component\Messenger\MessageBusInterface;
6768
use Symfony\Component\PropertyInfo\PropertyInfoExtractorInterface;
@@ -1434,6 +1435,10 @@ private function loadMessengerServices(ContainerBuilder $container): void
14341435
$loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../config'));
14351436
$loader->load('messenger.php');
14361437

1438+
if (! class_exists(PostgreSqlNotifyOnIdleListener::class)) {
1439+
$container->removeDefinition('messenger.transport.doctrine.pg_notify_on_idle_listener');
1440+
}
1441+
14371442
/**
14381443
* The Doctrine transport component (symfony/doctrine-messenger) is optional.
14391444
* Remove service definition, if it is not available

tests/DependencyInjection/DoctrineExtensionTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -809,8 +809,9 @@ public function testMessengerIntegrationWithDoctrineTransport(): void
809809

810810
$messengerTransportDoctrineFactory = $container->getDefinition('messenger.transport.doctrine.factory');
811811

812-
$this->assertCount(1, $messengerTransportDoctrineFactory->getArguments());
812+
$this->assertCount(2, $messengerTransportDoctrineFactory->getArguments());
813813
$this->assertSame('doctrine', (string) $messengerTransportDoctrineFactory->getArgument(0));
814+
$this->assertSame('messenger.transport.doctrine.pg_notify_on_idle_listener', (string) $messengerTransportDoctrineFactory->getArgument(1));
814815

815816
$this->assertSame(DoctrineTransportFactory::class, $messengerTransportDoctrineFactory->getClass());
816817

0 commit comments

Comments
 (0)