Indice

Introduzione

In questa pagina viene descritto il modulo di gestione delle code in itaEngine. Possiamo definire una coda come un'insieme di messaggi, che dovranno essere processati in ordine di inserimento (FIFO), al fine di rendere asincroni alcuni processi (Es. chiamate a web services).

Configurazione

Al file config.ini dovrà essere gestita la sesione [queue], che contiene le seguenti chiavi:

Descrizione delle singole componenti

Messaggio

Il messaggio rappresenta il singolo elemento della coda. E' un'istanza della classe itaQueueMessage (presente in lib/itaPHPQueue/itaQueueMessage.class.php) ed ha le seguenti proprietà:

Coda

La coda è composta dalle seguenti informazioni:

Lo stato, a sua volta, contiene le seguenti informazioni:

Gestore della Coda

Il gestore si occupa delle operazioni che andranno ad interagire con la coda. L'implementazione specifica è determinata dal parametro “queueType” presente nel file di configurazione (Utilizzando apposita factory). Attualmente l'unica implementazione possibile è quella fatta con la cache, la classe corrispondente è 'itaQueueManagerCache' (presente il lib/itaPHPQueue/ityaQueueManagerCache.class.php). Il gestore della coda si occupa delle seguenti operazioni:

Per reperire l'oggetto gestore, occorre fare in questo modo:

$qm = itaQueueFactory::getQueueManager();

Esempio di creazione di una coda:

$created = $qm->createQueue($itaQueueManagerBase::MESSAGE_TYPE_ANPR);

Worker

Ogni tipologia di coda ha una classe worker specifica, che si occupa dell'elaborazione del singolo messaggio. Ad esempio, per ANPR, la classe specifica è 'itaQueueWorkerANPR' presente in 'lib/itaPHPQueue/workers/itaQueueWorkerANPR.class.php'. Il worker è chiamato dal CLI, anch'esso specifico. Sempre nel caso di ANPR, lo script CLI da lanciare è 'queueWorkerANPR.php'.

Daemon

Per fare in modo che la coda giri come servizio, è opportuno scrivere un apposito daemon e registrarlo nel sistema come servizio. Per creare un nuovo daemon, basta semplicemente creare una nuova classe in /daemon/daemons/ con la seguente nomenclatura:

<nome-daemon>Daemon.class.php.

I metodi da implementare sono:

Per maggiori informazioni consultare la documentazione relativa ad itaDaemon