diff --git a/src/Commands/QueueMonitorCommand.php b/src/Commands/QueueMonitorCommand.php new file mode 100644 index 0000000..0417fa3 --- /dev/null +++ b/src/Commands/QueueMonitorCommand.php @@ -0,0 +1,71 @@ +pluck('queue'); + + // Create table for queue statistics + $table = $this->createTable(); + $table->setHeaders(['Queue', 'Pending', 'Processing']); + + foreach ($queues ?? [] as $queue) { + $pending = QueueJob::where('queue', $queue) + ->whereNull('reserved_at') + ->count(); + + $processing = QueueJob::where('queue', $queue) + ->whereNotNull('reserved_at') + ->count(); + + $table->addRow([ + $queue, + $pending, + $processing, + ]); + } + + // Render queue table + $this->newLine(); + $this->info("Queue Statistics"); + $table->render(); + + // Failed jobs table + $failedCount = FailedJob::count(); + + $failedTable = $this->createTable(); + $failedTable->setHeaders(['Metric', 'Value']); + $failedTable->addRow(['Failed Jobs', $failedCount]); + + $this->info("\nFailed Jobs Summary"); + $failedTable->render(); + + return Command::SUCCESS; + } +} diff --git a/src/QueueServiceProvider.php b/src/QueueServiceProvider.php index c11877e..e6e5408 100644 --- a/src/QueueServiceProvider.php +++ b/src/QueueServiceProvider.php @@ -9,6 +9,7 @@ use Doppar\Queue\Commands\QueueFlushCommand; use Doppar\Queue\Commands\QueueFailedCommand; use Doppar\Queue\Commands\MakeJobCommand; +use Doppar\Queue\Commands\QueueMonitorCommand; class QueueServiceProvider extends ServiceProvider { @@ -40,7 +41,8 @@ public function boot(): void QueueRetryCommand::class, MakeJobCommand::class, QueueFlushCommand::class, - QueueFailedCommand::class + QueueFailedCommand::class, + QueueMonitorCommand::class ]); } }