6.2. Pattern non bloccanti RPC PULL (busy waiting)¶
Questo caso particolare, denominato RPC PULL, è utilizzabile nel caso in cui il fruitore non abbia a sua volta la possibilità di esporre una interfaccia di servizio per la ricezione delle risposte. L’erogatore fornisce un URL per verificare lo stato di processamento di una richiesta e, alla fine dell’elaborazione della stessa, il risultato.
Questo scenario prevede due possibili workflow, uno per REST ed uno per SOAP riportati nelle seguenti figure.
Figura 3 - Interazione non bloccante tramite busy waiting REST
Il fruitore invia una richiesta (passo 1.) e riceve immediatamente un acknowledge (passo 2.) insieme ad:
- un URL dove verificare lo stato del processamento (REST);
- oppure un CorrelationID (SOAP).
D’ora in poi il fruitore, periodicamente, verifica (passo 3.) lo stato dell’operazione utilizzando:
- l’URL indicato (REST)
- oppure il CorrelationID (SOAP)
fin quando il risultato dell’operazione sarà pronto (passo 4b.).
Gli intervalli di polling possono essere definiti tra le parti.
Quando la risposta è pronta il fruitore può accedere (passi 5. e 6.) al risultato del processamento
Figura 4 - Interazione non bloccante tramite busy waiting SOAP