diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ab5c43..c6d67fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +2.3.2 +===== + +* (improvement) Skip `task_manager_internals` queue when checking for sync-queues. + + + 2.3.1 ===== diff --git a/src/DependencyInjection/TaskManagerBundleExtension.php b/src/DependencyInjection/TaskManagerBundleExtension.php index 477eac7..fb01c24 100644 --- a/src/DependencyInjection/TaskManagerBundleExtension.php +++ b/src/DependencyInjection/TaskManagerBundleExtension.php @@ -8,6 +8,7 @@ use Torr\TaskManager\Config\BundleConfig; use Torr\TaskManager\Log\LogCleaner; use Torr\TaskManager\Task\DispatchAfterRunTask\DispatchAfterRunTask; +use Torr\TaskManager\Transport\TransportsHelper; /** * @final @@ -49,12 +50,12 @@ public function prepend (ContainerBuilder $container) : void // We only register the sync task, so that the own tasks are worked on right away "messenger" => [ "transports" => [ - "task_manager_internals" => [ + TransportsHelper::INTERNAL_TRANSPORT_NAME => [ "dsn" => 'sync://', ], ], "routing" => [ - DispatchAfterRunTask::class => "task_manager_internals", + DispatchAfterRunTask::class => TransportsHelper::INTERNAL_TRANSPORT_NAME, ], ], ]); diff --git a/src/Task/DispatchAfterRunTask/DispatchAfterRunTask.php b/src/Task/DispatchAfterRunTask/DispatchAfterRunTask.php index 8da53dd..93ee13f 100644 --- a/src/Task/DispatchAfterRunTask/DispatchAfterRunTask.php +++ b/src/Task/DispatchAfterRunTask/DispatchAfterRunTask.php @@ -5,6 +5,7 @@ use Symfony\Component\Messenger\Attribute\AsMessage; use Torr\TaskManager\Task\Task; use Torr\TaskManager\Task\TaskMetaData; +use Torr\TaskManager\Transport\TransportsHelper; /** * This task takes another task and puts it into the queue. @@ -12,7 +13,7 @@ * This task is supposed to be worked on synchronously, as it is pretty lightweight and only * redispatches the given task. */ -#[AsMessage(transport: "task_manager_internals")] +#[AsMessage(transport: TransportsHelper::INTERNAL_TRANSPORT_NAME)] readonly class DispatchAfterRunTask extends Task { public function __construct ( diff --git a/src/Transport/TransportsHelper.php b/src/Transport/TransportsHelper.php index aa3ea2b..d2a87b7 100644 --- a/src/Transport/TransportsHelper.php +++ b/src/Transport/TransportsHelper.php @@ -16,6 +16,8 @@ */ final readonly class TransportsHelper { + public const string INTERNAL_TRANSPORT_NAME = "task_manager_internals"; + /** */ public function __construct ( @@ -29,8 +31,13 @@ public function __construct ( */ public function hasSyncTransport () : bool { - foreach ($this->getAllTransports() as $transport) + foreach ($this->getAllTransports() as $name => $transport) { + if (self::INTERNAL_TRANSPORT_NAME === $name) + { + continue; + } + if ($transport instanceof SyncTransport) { return true;