I COOKIE CI PERMETTONO DI MIGLIORARE LA TUA ESPERIENZA UTENTE CONTINUANDO A NAVIGARE SU QUESTO SITO ACCETTI IL LORO IMPIEGO 

Valutazione attuale: 0 / 5

Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

Mentre tabelle e blob hanno essenzialmente la funzione di consentire l'archiviazione e l'accesso ai dati, l'obiettivo principale delle code è consentire alle diverse parti di un'applicazione Windows Azure di comunicare. Come tutto il resto nell'archiviazione di Windows Azure, l'accesso alle code avviene in modalità REST. Sia le applicazioni Windows Azure che quelle esterne fanno riferimento alle code utilizzando un URI nel seguente formato:

http://<AccountArchiviazione>.queue.core.windows.net/<NomeCoda>

Come già accennato, le code vengono utilizzate anche per consentire l'interazione tra istanze di ruolo Web e istanze di ruolo di lavoro, come illustrato nella figura 15.

Figura 15: i messaggi vengono accodati, rimossi dalla coda, elaborati e quindi eliminati esplicitamente dalla coda.

 

In un tipico scenario, più istanze di ruolo Web sono in esecuzione in un dato momento, ciascuna delle quali accetta lavori dagli utenti (passaggio 1). Per passare un lavoro alle istanze di ruolo di lavoro, l'istanza di ruolo Web scrive un messaggio in una coda (passaggio 2). Questo messaggio, delle dimensioni massime di 8 KB, potrebbe contenere un URI che fa riferimento a un blob, a un'entità in una tabella o ad altro ancora. Le istanze di ruolo di lavoro leggono i messaggi nella coda (passaggio 3), quindi eseguono il lavoro richiesto (passaggio 4). È importante sottolineare che la lettura di un messaggio da una coda non ne comporta l'eliminazione, bensì rende il messaggio invisibile ad altre letture per un determinato periodo di tempo (30 secondi per impostazione predefinita). Una volta completata l'attività richiesta dal messaggio, l'istanza di ruolo di lavoro dovrà esplicitamente eliminare il messaggio dalla coda (passaggio 5).

Separando le istanze di ruolo Web dalle istanze di ruolo di lavoro, si evita all'utente di dover attendere il completamento delle attività in elaborazione e si semplifica la scalabilità, poiché è sufficiente aggiungere più istanze di entrambi. L'eliminazione esplicita dei messaggi da parte delle istanze è invece vantaggiosa perché permette di gestire gli errori. Se l'istanza di ruolo di lavoro che recupera il messaggio lo gestisce senza errori, eliminerà il messaggio quando questo sarà ancora invisibile, ovvero entro una finestra temporale di 30 secondi. Se invece un'istanza di ruolo di lavoro rimuove dalla coda un messaggio e quindi si arresta in modo anomalo prima di completare l'attività richiesta dal messaggio stesso, non eliminerà permanentemente il messaggio dalla coda. Allo scadere del tempo di invisibilità, il messaggio riapparirà nella coda e verrà letto da un'altra istanza di ruolo di lavoro. Lo scopo è garantire che ciascun messaggio venga elaborato almeno una volta.

Come possiamo vedere, le code di archiviazione di Windows Azure non seguono la stessa semantica delle code in Accodamento messaggi Microsoft (MSMQ) o altre tecnologie tradizionali. Un sistema di accodamento convenzionale può offrire ad esempio una semantica di tipo “First In, First Out” inviando esattamente una volta sola ciascun messaggio. Le code di archiviazione di Windows Azure non forniscono funzionalità di questo genere. Come abbiamo visto, un messaggio può essere recapitato più volte e non esiste un particolare ordine di recapito. Nella cloud l'approccio è differente e gli sviluppatori devono adattarsi a queste differenze.

You have no rights to post comments