Usare Funzioni di Azure per creare una funzione che connette ad altri servizi di Azure

Questo argomento illustra come creare una funzione in Funzioni di Azure che ascolta i messaggi in una coda di Azure e li copia nelle righe di una tabella di Archiviazione di Azure. Per caricare i messaggi nella coda viene usata una funzione attivata da un timer. Una seconda funzione legge i messaggi dalla coda e li scrive nella tabella. Sia la coda che la tabella vengono create da funzioni di Azure sulla base delle definizioni di associazione.

Per rendere le cose più interessanti, una funzione è scritta in JavaScript e l'altra in C#. Questo dimostra che un'app per le funzioni può avere funzioni scritte in linguaggi diversi.

È possibile vedere la dimostrazione di questo scenario in un video di Channel 9.

Creare una funzione che scrive nella coda

Prima di connettersi a una coda di archiviazione, è necessario creare una funzione che carica la coda di messaggi. La funzione JavaScript usa un trigger basato su timer che scrive un messaggio nella coda ogni 10 secondi. Se non si dispone già di un account Azure, vedere Prova Funzioni di Azure oppure creare un account Azure gratuito.

  1. Passare al portale di Azure e trovare l'app per le funzioni.

  2. Fare clic su Nuova funzione > TimerTrigger-JavaScript.

  3. Assegnare alla funzione il nome FunctionsBindingsDemo1, immettere un valore di espressione cron 0/10 * * * * * per Pianificazione e quindi fare clic su Crea.

    Aggiungere una funzione attivata da un timer

    A questo punto è stata creata una funzione attivata da un timer che viene eseguita ogni 10 secondi.

  4. Nella scheda Sviluppo fare clic su Log e visualizzare l'attività nel log. Si noti che viene scritta una voce di log ogni 10 secondi.

    Visualizzare il log per verificare il funzionamento della funzione

Aggiungere un'associazione di output della coda dei messaggi

  1. Nella scheda Integrazione scegliere Nuovo output > Archiviazione code di Azure > Seleziona.

    Aggiungere una funzione attivata da un timer

  2. Immettere myQueueItem per Nome del parametro del messaggio e functions-bindings per Nome coda, selezionare una Connessione dell'account di archiviazione esistente o fare clic su nuova per creare una connessione dell'account di archiviazione, quindi fare clic su Salva.

    Creare l'associazione di output alla coda dei messaggi

  3. Tornare alla scheda Sviluppo e aggiungere alla funzione il codice seguente:

    
    function myQueueItem() 
    {
        return {
            msg: "some message goes here",
            time: "time goes here"
        }
    }
    
  4. Individuare l'istruzione if più o meno in corrispondenza della riga 9 della funzione e inserire dopo di essa il codice seguente.

    
    var toBeQed = myQueueItem();
    toBeQed.time = timeStamp;
    context.bindings.myQueueItem = toBeQed;
    

    Questo codice crea un oggetto myQueueItem e ne imposta la proprietà time sul valore corrente di timeStamp. Aggiunge quindi il nuovo elemento della coda all'associazione myQueueItem del contesto.

  5. Fare clic su Salva ed esegui.

Visualizzare gli aggiornamenti di archiviazione usando Storage Explorer

È possibile verificare il funzionamento della funzione visualizzando i messaggi nella coda creata. È possibile connettersi alla coda di archiviazione usando Visual Studio Cloud Explorer. Usando il portale e Microsoft Azure Storage Explorer, tuttavia, la connessione all'account di archiviazione risulta più semplice.

  1. Nella scheda Integrazione selezionare l'associazione di output della coda > Documentazione, visualizzare la stringa di connessione per l'account di archiviazione e quindi copiare il valore. Usare questo valore per la connessione all'account di archiviazione.

    Scaricare Azure Storage Explorer

  2. Se non è già stato fatto, scaricare e installare Microsoft Azure Storage Explorer.

  3. In Storage Explorer fare clic sull'icona Connetti ad Archiviazione di Azure, incollare la stringa di connessione nel campo e completare la procedura guidata.

    Storage Explorer aggiunge una connessione

  4. In Local and attached (Locale e collegato) espandere Account di archiviazione > account di archiviazione > Code > functions-bindings e verificare che i messaggi vengano scritti nella coda.

    Visualizzazione dei messaggi nella coda

    Se la coda non esiste o è vuota, è probabile che si tratti di un problema relativo al codice o all'associazione della funzione.

Creare una funzione che legge dalla coda

Dopo aver aggiunto i messaggi alla coda, è possibile creare un'altra funzione che legge dalla coda e scrive i messaggi in modo permanente in una tabella di Archiviazione di Azure.

  1. Fare clic su Nuova funzione > QueueTrigger-CSharp.

  2. Assegnare alla funzione il nome FunctionsBindingsDemo2, immettere functions-bindings nel campo Nome coda, selezionare un account di archiviazione esistente o crearne uno e quindi fare clic su Crea.

    Aggiungere una funzione timer della coda di output

  3. (Facoltativo) È possibile verificare il funzionamento della nuova funzione visualizzando la nuova coda in Storage Explorer, come descritto in precedenza. È anche possibile usare Visual Studio Cloud Explorer.

  4. (Facoltativo) Aggiornare la coda functions-bindings: notare che sono state rimossi alcuni elementi. La rimozione si verifica perché la funzione è associata alla coda functions-bindings come trigger di input e legge tale coda.

Aggiungere un'associazione di output della tabella

  1. In FunctionsBindingsDemo2 fare clic su Integrazione > Nuovo output > Archiviazione tabelle di Azure > Seleziona.

    Aggiungere un'associazione a una tabella di Archiviazione di Azure

  2. Immettere functionbindings per Nome tabella e myTable per Nome del parametro della tabella, scegliere una Connessione dell'account di archiviazione o crearne una nuova e quindi fare clic su Salva.

    Configurare l'associazione della tabella di archiviazione

  3. Nella scheda Sviluppo sostituire il codice della funzione esistente con il seguente:

    
    using System;
    
    public static void Run(QItem myQueueItem, ICollector<TableItem> myTable, TraceWriter log)
    {    
        TableItem myItem = new TableItem
        {
            PartitionKey = "key",
            RowKey = Guid.NewGuid().ToString(),
            Time = DateTime.Now.ToString("hh.mm.ss.ffffff"),
            Msg = myQueueItem.Msg,
            OriginalTime = myQueueItem.Time    
        };
    
        // Add the item to the table binding collection.
        myTable.Add(myItem);
    
        log.Verbose($"C# Queue trigger function processed: {myItem.RowKey} | {myItem.Msg} | {myItem.Time}");
    }
    
    public class TableItem
    {
        public string PartitionKey {get; set;}
        public string RowKey {get; set;}
        public string Time {get; set;}
        public string Msg {get; set;}
        public string OriginalTime {get; set;}
    }
    
    public class QItem
    {
        public string Msg { get; set;}
        public string Time { get; set;}
    }
    

    La classe TableItem rappresenta una riga della tabella di archiviazione. Aggiungere l'elemento alla raccolta myTable di oggetti TableItem. Per inserire voci nella tabella, è necessario impostare le proprietà PartitionKey e RowKey.

  4. Fare clic su Salva Al termine, è possibile verificare il funzionamento della funzione visualizzando la tabella in Storage Explorer o Visual Studio Cloud Explorer.

  5. (Facoltativo) Nell'account di archiviazione di Storage Explorer espandere Tabelle > functionsbindings e verificare che alla tabella vengano aggiunte delle righe. È possibile eseguire la stessa operazione in Visual Studio Cloud Explorer.

    Visualizzazione delle righe della tabella

    Se la tabella non esiste o è vuota, è probabile che si tratti di un problema relativo al codice o all'associazione della funzione.

Per informazioni su altre associazioni e altri trigger per Funzioni di Azure, vedere Guida di riferimento per gli sviluppatori di trigger e associazioni di Funzioni di Azure.

Passaggi successivi

Per altre informazioni su Funzioni di Azure, vedere gli argomenti seguenti:

Serve aiuto?

Inserire domande nei forum Azure. Visitare MSDN

Contrassegnare le domande con la parola chiave azure-functions. Visitare Stack Overflow