Skip to content

Commit 97adf6a

Browse files
committed
ported updates from version 1.x
1 parent 29a1dcc commit 97adf6a

File tree

6 files changed

+91
-6
lines changed

6 files changed

+91
-6
lines changed

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ Set up the QueueMonitor configuration in your `config/app_local.php`:
5252
```php
5353
// ...
5454
'QueueMonitor' => [
55+
// With this setting you can enable or disable the queue monitoring, the queue
56+
// monitoring is enabled by default
57+
'disable' => false,
58+
5559
// mailer config, the default is `default` mailer, you can ommit
5660
// this setting if you use default value
5761
'mailerConfig' => 'myCustomMailer',

src/Command/NotifyCommand.php

+13
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,18 @@
1818
use Cake\Console\ConsoleOptionParser;
1919
use Cake\Core\Configure;
2020
use Cake\Log\LogTrait;
21+
use CakeDC\QueueMonitor\Core\DisableTrait;
2122
use CakeDC\QueueMonitor\Service\QueueMonitoringService;
2223
use Exception;
24+
use Psr\Log\LogLevel;
2325
use function Cake\I18n\__;
2426

2527
/**
2628
* QueueMonitoringNotify command.
2729
*/
2830
final class NotifyCommand extends Command
2931
{
32+
use DisableTrait;
3033
use LogTrait;
3134

3235
private const DEFAULT_LONG_JOB_IN_MINUTES = 30;
@@ -37,6 +40,7 @@ final class NotifyCommand extends Command
3740
public function __construct(
3841
private readonly QueueMonitoringService $queueMonitoringService
3942
) {
43+
parent::__construct();
4044
}
4145

4246
/**
@@ -61,6 +65,15 @@ public function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionPar
6165
*/
6266
public function execute(Arguments $args, ConsoleIo $io)
6367
{
68+
if ($this->isDisabled()) {
69+
$this->log(
70+
'Notification were not sent because Queue Monitor is disabled.',
71+
LogLevel::WARNING
72+
);
73+
74+
return self::CODE_SUCCESS;
75+
}
76+
6477
try {
6578
$this->queueMonitoringService->notifyAboutLongRunningJobs(
6679
(int)Configure::read(

src/Command/PurgeCommand.php

+18-5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Cake\Console\ConsoleOptionParser;
1919
use Cake\Core\Configure;
2020
use Cake\Log\LogTrait;
21+
use CakeDC\QueueMonitor\Core\DisableTrait;
2122
use CakeDC\QueueMonitor\Service\QueueMonitoringService;
2223
use Exception;
2324
use Psr\Log\LogLevel;
@@ -28,6 +29,7 @@
2829
*/
2930
final class PurgeCommand extends Command
3031
{
32+
use DisableTrait;
3133
use LogTrait;
3234

3335
private const DEFAULT_PURGE_DAYS_OLD = 30;
@@ -38,6 +40,7 @@ final class PurgeCommand extends Command
3840
public function __construct(
3941
private readonly QueueMonitoringService $queueMonitoringService
4042
) {
43+
parent::__construct();
4144
}
4245

4346
/**
@@ -62,18 +65,28 @@ public function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionPar
6265
*/
6366
public function execute(Arguments $args, ConsoleIo $io)
6467
{
68+
if ($this->isDisabled()) {
69+
$this->log(
70+
'Logs were not purged because Queue Monitor is disabled.',
71+
LogLevel::WARNING
72+
);
73+
74+
return self::CODE_SUCCESS;
75+
}
76+
$purgeLogsOlderThanDays = (int)Configure::read(
77+
'QueueMonitor.purgeLogsOlderThanDays',
78+
self::DEFAULT_PURGE_DAYS_OLD
79+
);
80+
6581
$purgeToDate = $this->queueMonitoringService->getPurgeToDate(
66-
(int)Configure::read(
67-
'QueueMonitor.purgeLogsOlderThanDays',
68-
self::DEFAULT_PURGE_DAYS_OLD
69-
)
82+
$purgeLogsOlderThanDays
7083
);
7184
$this->log(
7285
"Purging queue logs older than {$purgeToDate->toDateTimeString()} UTC",
7386
LogLevel::INFO
7487
);
7588
try {
76-
$rowCount = $this->queueMonitoringService->purgeLogs(self::DEFAULT_PURGE_DAYS_OLD);
89+
$rowCount = $this->queueMonitoringService->purgeLogs($purgeLogsOlderThanDays);
7790
$this->log(
7891
"Purged $rowCount queue messages older than {$purgeToDate->toDateTimeString()} UTC",
7992
LogLevel::INFO

src/Core/DisableTrait.php

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace CakeDC\QueueMonitor\Core;
5+
6+
use Cake\Core\Configure;
7+
8+
/**
9+
* Disable trait
10+
*/
11+
trait DisableTrait
12+
{
13+
/**
14+
* Check if queue monitoring is disabled by configuration
15+
*/
16+
protected function isDisabled(): bool
17+
{
18+
return (bool)Configure::read('QueueMonitor.disabled', false);
19+
}
20+
}

src/Listener/QueueMonitorListener.php

+19-1
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,20 @@
1515
use Cake\Event\EventInterface;
1616
use Cake\Event\EventListenerInterface;
1717
use Cake\I18n\DateTime;
18+
use Cake\Log\Log;
1819
use Cake\Log\LogTrait;
1920
use Cake\ORM\Locator\LocatorAwareTrait;
2021
use Cake\ORM\Table;
2122
use Cake\Queue\Job\Message;
2223
use Cake\Utility\Hash;
24+
use CakeDC\QueueMonitor\Core\DisableTrait;
2325
use CakeDC\QueueMonitor\Exception\QueueMonitorException;
2426
use CakeDC\QueueMonitor\Model\Status\MessageEvent;
2527
use CakeDC\QueueMonitor\Model\Table\LogsTable;
2628
use Exception;
2729
use Interop\Queue\Message as QueueMessage;
2830
use Throwable;
31+
use function Cake\I18n\__;
2932

3033
/**
3134
* QueueMonitorListener
@@ -34,6 +37,7 @@
3437
*/
3538
final class QueueMonitorListener implements EventListenerInterface
3639
{
40+
use DisableTrait;
3741
use LocatorAwareTrait;
3842
use LogTrait;
3943

@@ -73,6 +77,10 @@ public function implementedEvents(): array
7377
*/
7478
public function handleException(EventInterface $event, ?Message $message, ?Throwable $exception = null): void
7579
{
80+
if ($this->isDisabled()) {
81+
return;
82+
}
83+
7684
try {
7785
$message = $this->validateQueueMessage($message);
7886

@@ -103,6 +111,10 @@ public function handleException(EventInterface $event, ?Message $message, ?Throw
103111
*/
104112
public function handleMessageEvent(EventInterface $event, ?Message $message): void
105113
{
114+
if ($this->isDisabled()) {
115+
return;
116+
}
117+
106118
try {
107119
$message = $this->validateQueueMessage($message);
108120

@@ -122,6 +134,10 @@ public function handleMessageEvent(EventInterface $event, ?Message $message): vo
122134
*/
123135
public function handleSeen(EventInterface $event, ?QueueMessage $queueMessage): void
124136
{
137+
if ($this->isDisabled()) {
138+
return;
139+
}
140+
125141
try {
126142
$queueMessage = $this->validateInteropQueueMessage($queueMessage);
127143
$messageBody = json_decode($queueMessage->getBody(), true);
@@ -174,7 +190,9 @@ private function storeEvent(
174190
'properties' => $queueMessage->getProperties(),
175191
]);
176192

177-
$this->QueueMonitoringLogs->saveOrFail($queueMonitoringLog);
193+
if (!$this->QueueMonitoringLogs->save($queueMonitoringLog)) {
194+
Log::warning(__('Unable to save queue monitoring log into database'));
195+
}
178196
}
179197

180198
/**

src/Model/Status/MessageEvent.php

+17
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,23 @@ public function getEventAsInt(): int
4343
};
4444
}
4545

46+
/**
47+
* Get Event enum from int value
48+
*/
49+
public static function getEventFromInt(?int $eventInt): ?self
50+
{
51+
return match ($eventInt) {
52+
1 => self::Seen,
53+
2 => self::Invalid,
54+
3 => self::Start,
55+
4 => self::Exception,
56+
5 => self::Success,
57+
6 => self::Reject,
58+
7 => self::Failure,
59+
default => null,
60+
};
61+
}
62+
4663
/**
4764
* Get as options
4865
*/

0 commit comments

Comments
 (0)