$useNotify =
($options['use_notify'
] ?? true
);
unset($options['transport_name'
],
$options['use_notify'
]);
// Always allow PostgreSQL-specific keys, to be able to transparently fallback to the native driver when LISTEN/NOTIFY isn't available
$configuration = PostgreSqlConnection::
buildConfiguration($dsn,
$options);
try { $driverConnection =
$this->registry->
getConnection($configuration['connection'
]);
} catch (\InvalidArgumentException
$e) { throw new TransportException('Could not find Doctrine connection from Messenger DSN.', 0,
$e);
} if ($useNotify &&
$driverConnection->
getDatabasePlatform() instanceof PostgreSQLPlatform
) { $connection =
new PostgreSqlConnection($configuration,
$driverConnection);
} else { $connection =
new Connection($configuration,
$driverConnection);
} return new DoctrineTransport($connection,
$serializer);
} public function supports(#[\SensitiveParameter] string $dsn, array $options): bool
{ return str_starts_with($dsn, 'doctrine://'
);
}