Introduzione alle code del bus di servizio

Contenuto dell'esercitazione

Questa esercitazione illustra i passaggi seguenti:

  1. Creare uno spazio dei nomi del bus di servizio usando il portale di Azure.
  2. Creare una coda del bus di servizio usando il portale di Azure.
  3. Scrivere un'applicazione console per inviare un messaggio.
  4. Scrivere un'applicazione console per ricevere i messaggi inviati nel passaggio precedente.

Prerequisiti

  1. Visual Studio 2015 o versione successiva. Negli esempi di questa esercitazione viene usato Visual Studio 2017.
  2. Una sottoscrizione di Azure.

Nota

Per completare l'esercitazione, è necessario un account Azure. È possibile attivare i benefici della sottoscrizione MSDN o iscriversi per un account gratuito.

1. Creare uno spazio dei nomi tramite il portale di Azure

Se è già stato creato uno spazio dei nomi di messaggistica del bus di servizio, passare alla sezione Creare una coda usando il portale di Azure.

Per iniziare a usare le entità di messaggistica del bus di servizio in Azure, prima di tutto è necessario creare uno spazio dei nomi con un nome univoco in Azure. Uno spazio dei nomi fornisce un contenitore di ambito per fare riferimento alle risorse del bus di servizio all'interno dell'applicazione.

Per creare uno spazio dei nomi:

  1. Accedere al portale di Azure.
  2. Nel riquadro di spostamento sinistro del portale fare clic su Nuovo, quindi su Enterprise Integration e infine su Bus di servizio.
  3. Nella finestra di dialogo Crea spazio dei nomi immettere un nome per lo spazio dei nomi. Verrà effettuato immediatamente un controllo sulla disponibilità del nome.
  4. Dopo aver verificato che il nome dello spazio dei nomi sia disponibile, scegliere il piano tariffario, ovvero Basic, Standard o Premium.
  5. Nel campo Sottoscrizione scegliere una sottoscrizione di Azure in cui creare lo spazio dei nomi.
  6. Nel campo Gruppo di risorse scegliere un gruppo di risorse esistente nel quale risiederà lo spazio dei nomi oppure crearne uno nuovo.
  7. In Localitàscegliere il paese o l'area in cui deve essere ospitato lo spazio dei nomi.

    Crea spazio dei nomi

  8. Fare clic su Crea. A questo punto, lo spazio dei nomi verrà creato e abilitato nel sistema. Potrebbero essere necessari alcuni minuti per consentire al sistema di effettuare il provisioning delle risorse per lo spazio dei nomi creato.

Ottenere le credenziali di gestione

Con la creazione di un nuovo spazio dei nomi verrà generata automaticamente una regola di firma di accesso condiviso iniziale con una coppia di chiavi primaria e secondaria associata che concede il controllo completo di tutti gli aspetti dello spazio dei nomi. Vedere Autenticazione e autorizzazione del bus di servizio per informazioni su come creare altre regole con diritti più limitati per mittenti e destinatari normali. Per copiare la regola iniziale seguire questa procedura:

  1. Nell'elenco degli spazi dei nomi fare clic sul nome dello spazio dei nomi appena creato.
  2. Nel pannello dello spazio dei nomi fare clic su Criteri di accesso condivisi.
  3. Nel pannello Criteri di accesso condivisi fare clic su RootManageSharedAccessKey.

    connection-info

  4. Nel pannello Criteri: RootManageSharedAccessKey fare clic sul pulsante Copia accanto a Stringa di connessione - chiave primaria per copiare la stringa di connessione negli Appunti e usarla in un secondo momento. Incollare questo valore nel Blocco note o in un'altra posizione temporanea.

    connection-string

  5. Ripetere il passaggio precedente e copiare e incollare il valore della chiave primaria in un percorso temporaneo per usarlo in seguito.

2. Creare una coda usando il portale di Azure

Se è già stata creata una coda del bus di servizio, passare alla sezione Inviare messaggi alla coda.

Verificare che sia già stato creato uno spazio dei nomi del bus di servizio, come illustrato qui.

  1. Accedere al portale di Azure.
  2. Nel riquadro di spostamento a sinistra del portale, fare clic su Bus di servizio (se non viene visualizzato Bus di servizio, fare clic su Altri servizi).
  3. Fare clic sullo spazio dei nomi in cui si vuole creare la coda. In questo caso è nstest1.

    Creare una coda

  4. Nel pannello Spazio dei nomi del bus di servizio selezionare Code e quindi fare clic su Aggiungi coda.

    Selezionare Code

  5. Immettere un nome in Nome coda e lasciare invariati gli altri valori.

    Selezionare Nuovo

  6. Fare clic su Creanella parte inferiore del pannello.

3. Inviare messaggi alla coda

Per inviare messaggi alla coda, si scrive un'applicazione console C# in Visual Studio.

Creare un'applicazione console

Avviare Visual Studio e creare un nuovo progetto App console (.NET Framework).

Aggiungere il pacchetto NuGet del bus di servizio

  1. Fare clic con il pulsante destro del mouse sul progetto appena creato e scegliere Gestisci pacchetti NuGet.
  2. Fare clic sulla scheda Esplora, cercare Bus di servizio di Microsoft Azure e quindi selezionare l'elemento WindowsAzure.ServiceBus. Fare clic su Installa per completare l'installazione, quindi chiudere questa finestra di dialogo.

    Selezionare un pacchetto NuGet

Scrivere il codice per inviare un messaggio alla coda

  1. Aggiungere l'istruzione using seguente all'inizio del file Program.cs.

    using Microsoft.ServiceBus.Messaging;
    
  2. Aggiungere il codice seguente al metodo Main . Impostare la variabile connectionString sulla stessa stringa di connessione ottenuta al momento della creazione dello spazio dei nomi e impostare queueName sul nome della coda usato durante la creazione della coda.

    var connectionString = "<your connection string>";
    var queueName = "<your queue name>";
    
    var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
    var message = new BrokeredMessage("This is a test message!");
    
    Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
    
    client.Send(message);
    
    Console.WriteLine("Message successfully sent! Press ENTER to exit program");
    Console.ReadLine();
    

    Ecco l'aspetto che avrà il file Program.cs.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.ServiceBus.Messaging;
    
    namespace qsend
    {
        class Program
        {
            static void Main(string[] args)
            {
                var connectionString = "Endpoint=sb://<your namespace>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<your key>";
                var queueName = "<your queue name>";
    
                var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
                var message = new BrokeredMessage("This is a test message!");
    
                Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
    
                client.Send(message);
    
                Console.WriteLine("Message successfully sent! Press ENTER to exit program");
                Console.ReadLine();
            }
        }
    }
    
  3. Eseguire il programma e controllare il portale di Azure: fare clic sul nome della coda nel pannello Panoramica dello spazio dei nomi. Viene visualizzato il pannello Informazioni di base della coda. Si noti che ora il valore di Numero di messaggi attivi è 1. Ogni volta che si avvia l'applicazione mittente senza recuperare i messaggi, questo valore aumenta di 1. Tenere anche presente che la dimensione corrente della coda aumenta ogni volta che l'app aggiunge un messaggio alla coda.

    Dimensioni dei messaggi

4. Ricezione di messaggi dalla coda

  1. Per ricevere i messaggi inviati, creare una nuova applicazione console e aggiungere un riferimento al pacchetto NuGet del bus di servizio, come per l'applicazione mittente precedente.
  2. Aggiungere l'istruzione using seguente all'inizio del file Program.cs.

    using Microsoft.ServiceBus.Messaging;
    
  3. Aggiungere il codice seguente al metodo Main . Impostare la variabile connectionString sulla stessa stringa di connessione ottenuta al momento della creazione dello spazio dei nomi e impostare queueName sul nome della coda usato durante la creazione della coda.

    var connectionString = "<your connection string>";
    var queueName = "<your queue name>";
    
    var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
    
    client.OnMessage(message =>
    {
      Console.WriteLine(String.Format("Message body: {0}", message.GetBody<String>()));
      Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
    });
    
    Console.WriteLine("Press ENTER to exit program");
    Console.ReadLine();
    

    Ecco l'aspetto che avrà il file Program.cs:

    using System;
    using Microsoft.ServiceBus.Messaging;
    
    namespace GettingStartedWithQueues
    {
      class Program
      {
        static void Main(string[] args)
        {
          var connectionString = "Endpoint=sb://<your namespace>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<your key>";;
          var queueName = "<your queue name>";
    
          var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
    
          client.OnMessage(message =>
          {
            Console.WriteLine(String.Format("Message body: {0}", message.GetBody<String>()));
            Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
          });
    
          Console.WriteLine("Press ENTER to exit program");   
          Console.ReadLine();
        }
      }
    }
    
  4. Eseguire il programma e verificare di nuovo il portale. Si noti che ora i valori di Numero di messaggi attivi e di Corrente sono pari a 0.

    Lunghezza coda

Congratulazioni. È stata creata una coda ed è stato inviato e ricevuto un messaggio.

Passaggi successivi

Vedere il repository GitHub con esempi che illustrano alcune delle funzionalità più avanzate della messaggistica del bus di servizio.