Passa al contenuto principale

Code SOH

Version ≥ 3.2

SOH utilizza al suo interno le code Symfony e il Supervisor per gestire gli eventi asincroni con un'esecuzione lenta. E' configurato uno worker ad hoc per gestire solo i processi SOH ed evitare quindi rallentamenti dovuti ai processi standard di maintenance.

I nomi delle code gestite sono:

  • soh_core
  • soh_sync
  • soh_oms

Esempio

Messaggio

Esempio di messaggio per trasportare le informazioni necessarie e che sarà inserito in coda.

namespace App;

class TestMessage
{
public function __construct(protected int $id)
{
}

public function getId(): int
{
return $this->id;
}
}

Handler

Esempio di handler per l'elaborazione del messaggio.

namespace App;

use Symfony\Component\Messenger\Attribute\AsMessageHandler;

#[AsMessageHandler]
class TestHandler
{
public function __construct(protected YourService $yourService)
{
}

public function __invoke(TestMessage $message): void
{
// Do the logic here
}
}

Dispatch

Una volta definito handler e messaggio è possibile fare il dispatch tramite il servizio Symfony di MessageBus.

namespace App;

use Symfony\Component\Messenger\MessageBusInterface;

class YourAsyncService
{
public function __construct(protected MessageBusInterface $messageBus)
{
}

public function yourMethod(): void
{
$this->messageBus->dispatch(new TestMessage(1234));
}
}

Registrazione

L'associazione del messaggio all'handler è effettuata all'interno del file YAML config/packages/messenger.yaml nel seguente modo:

framework:
messenger:
routing:
App\TestMessage: soh_core