Cambio en queue para que no quede pegado esperando respuesta en cli.

Chequeo de servicios externos para agregar elementos pendientes.
This commit is contained in:
Juan Pablo Vial
2025-05-15 19:32:25 -04:00
parent 8d32aecd09
commit 8965354528
21 changed files with 687 additions and 65 deletions

View File

@ -0,0 +1,49 @@
<?php
namespace Incoviba\Service;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal;
class External extends Ideal\Service
{
public function __construct(LoggerInterface $logger, protected Queue $queueService)
{
parent::__construct($logger);
}
protected array $externalServices;
public function register($service): self
{
if (!isset($this->externalServices)) {
$this->externalServices = [$service];
return $this;
}
if (!in_array($service, $this->externalServices)) {
$this->externalServices []= $service;
}
return $this;
}
public function check(): bool
{
$errors = [];
foreach ($this->externalServices as $externalService) {
if (!method_exists($externalService, 'check')) {
continue;
}
$queueData = [
'type' => 'checkExternal',
'service' => get_class($externalService),
'action' => 'check',
];
if (!$this->queueService->enqueue($queueData)) {
$errors []= get_class($externalService);
}
}
if (count($errors) > 0) {
$this->logger->error('Could not enqueue check of external services', ['services' => $errors]);
return false;
}
return true;
}
}