Introduzione agli argomenti del bus di servizioGet started with Service Bus topics

Questa esercitazione illustra i passaggi seguenti:This tutorial covers the following steps:

  1. Creare uno spazio dei nomi del bus di servizio usando il portale di Azure.Create a Service Bus namespace, using the Azure portal.
  2. Creare un argomento del bus di servizio usando il portale di Azure.Create a Service Bus topic, using the Azure portal.
  3. Creare una sottoscrizione a tale argomento del bus di servizio usando il portale di Azure.Create a Service Bus subscription to that topic, using the Azure portal.
  4. Scrivere un'applicazione console per inviare un messaggio all'argomento.Write a console application to send a message to the topic.
  5. Scrivere un'applicazione console per ricevere tale messaggio dalla sottoscrizione.Write a console application to receive that message from the subscription.

PrerequisitiPrerequisites

  1. Visual Studio 2015 o versione successiva.Visual Studio 2015 or higher. Negli esempi di questa esercitazione viene usato Visual Studio 2017.The examples in this tutorial use Visual Studio 2017.
  2. Una sottoscrizione di Azure.An Azure subscription.

Nota

Per completare l'esercitazione, è necessario un account Azure.To complete this tutorial, you need an Azure account. È possibile attivare i benefici della sottoscrizione MSDN o iscriversi per un account gratuito.You can activate your MSDN subscriber benefits or sign up for a free account.

1. Creare uno spazio dei nomi tramite il portale di Azure1. Create a namespace using the Azure portal

Se è già stato creato uno spazio dei nomi di messaggistica del bus di servizio, passare alla sezione Creare un argomento usando il portale di Azure.If you have already created a Service Bus Messaging namespace, jump to the Create a topic using the Azure portal section.

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.To begin using Service Bus messaging entities in Azure, you must first create a namespace with a name that is unique across Azure. Uno spazio dei nomi fornisce un contenitore di ambito per fare riferimento alle risorse del bus di servizio all'interno dell'applicazione.A namespace provides a scoping container for addressing Service Bus resources within your application.

Per creare uno spazio dei nomi:To create a namespace:

  1. Accedere al portale di Azure.Log on to the Azure portal.
  2. Nel riquadro di spostamento sinistro del portale fare clic su Nuovo, quindi su Enterprise Integration e infine su Bus di servizio.In the left navigation pane of the portal, click New, then click Enterprise Integration, and then click Service Bus.
  3. Nella finestra di dialogo Crea spazio dei nomi immettere un nome per lo spazio dei nomi.In the Create namespace dialog, enter a namespace name. Verrà effettuato immediatamente un controllo sulla disponibilità del nome.The system immediately checks to see if the name is available.
  4. Dopo aver verificato che il nome dello spazio dei nomi sia disponibile, scegliere il piano tariffario, ovvero Basic, Standard o Premium.After making sure the namespace name is available, choose the pricing tier (Basic, Standard, or Premium).
  5. Nel campo Sottoscrizione scegliere una sottoscrizione di Azure in cui creare lo spazio dei nomi.In the Subscription field, choose an Azure subscription in which to create the namespace.
  6. Nel campo Gruppo di risorse scegliere un gruppo di risorse esistente nel quale risiederà lo spazio dei nomi oppure crearne uno nuovo.In the Resource group field, choose an existing resource group in which the namespace will live, or create a new one.
  7. In Localitàscegliere il paese o l'area in cui deve essere ospitato lo spazio dei nomi.In Location, choose the country or region in which your namespace should be hosted.

    Crea spazio dei nomi

  8. Fare clic su Crea.Click Create. A questo punto, lo spazio dei nomi verrà creato e abilitato nel sistema.The system now creates your namespace and enables it. Potrebbero essere necessari alcuni minuti per consentire al sistema di effettuare il provisioning delle risorse per lo spazio dei nomi creato.You might have to wait several minutes as the system provisions resources for your account.

Ottenere le credenziali di gestioneObtain the management credentials

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.Creating a new namespace will automatically generate an initial Shared Access Signature (SAS) rule with an associated pair of primary and secondary keys that grants full control over all aspects of the namespace. Vedere Autenticazione e autorizzazione del bus di servizio per informazioni su come creare altre regole con diritti più limitati per mittenti e destinatari normali.Refer to Service Bus authentication and authorization for how to create further rules with more constrained rights for regular senders and receivers. Per copiare la regola iniziale seguire questa procedura:To copy the initial rule, follow these steps:

  1. Nell'elenco degli spazi dei nomi fare clic sul nome dello spazio dei nomi appena creato.In the list of namespaces, click the newly created namespace name.
  2. Nel pannello dello spazio dei nomi fare clic su Criteri di accesso condivisi.In the namespace blade, click Shared access policies.
  3. Nel pannello Criteri di accesso condivisi fare clic su RootManageSharedAccessKey.In the Shared access policies blade, click 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.In the Policy: RootManageSharedAccessKey blade, click the copy button next to Connection string–primary key, to copy the connection string to your clipboard for later use. Incollare questo valore nel Blocco note o in un'altra posizione temporanea.Paste this value into Notepad or some other temporary location.

    connection-string

  5. Ripetere il passaggio precedente e copiare e incollare il valore della chiave primaria in un percorso temporaneo per usarlo in seguito.Repeat the previous step, copying and pasting the value of Primary key to a temporary location for later use.

2. Creare un argomento usando il portale di Azure2. Create a topic using the Azure portal

  1. Accedere al portale di Azure.Log on to the Azure portal.
  2. Nel riquadro di spostamento sinistro nel portale fare clic su Bus di servizio (se l'opzione Bus di servizio non è visualizzata, fare clic su Altri servizi oppure su Tutte le risorse).In the left navigation pane of the portal, click Service Bus (if you don't see Service Bus, click More services, or click on All Resources).
  3. Fare clic sullo spazio dei nomi in cui si vuole creare l'argomento.Click the namespace in which you would like to create the topic. Viene visualizzato il pannello della panoramica dello spazio dei nomi:The namespace overview blade appears:

    Creare un argomento

  4. Nel pannello Spazio dei nomi del bus di servizio fare clic su Argomenti e quindi su Aggiungi argomento.In the Service Bus namespace blade, click Topics, then click Add topic.

    Selezionare gli argomenti

  5. Immettere un nome per l'argomento e deselezionare l'opzione Abilita partizionamento.Enter a name for the topic, and uncheck the Enable partitioning option. Lasciare invariati i valori predefiniti delle altre opzioni.Leave the other options with their default values.

    Selezionare Nuovo

  6. Fare clic su Creanella parte inferiore del pannello.At the bottom of the blade, click Create.

3. Creare una sottoscrizione all'argomento3. Create a subscription to the topic

  1. Nel riquadro delle risorse del portale fare clic sullo spazio dei nomi creato nel passaggio 1, quindi fare clic sul nome dell'argomento creato nel passaggio 2.In the portal resources pane, click the namespace you created in step 1, then click name of the topic you created in step 2.
  2. Nella parte superiore del riquadro della panoramica fare clic sul segno più accanto a Sottoscrizione per aggiungere una sottoscrizione a questo argomento.At the top of the overview pane, click the plus sign next to Subscription to add a subscription to this topic.

    Creare la sottoscrizione

  3. Immettere un nome per la sottoscrizione.Enter a name for the subscription. Lasciare invariati i valori predefiniti delle altre opzioni.Leave the other options with their default values.

4. Inviare messaggi all'argomento4. Send messages to the topic

Per inviare messaggi all'argomento, si scrive un'applicazione console C# in Visual Studio.To send messages to the topic, we write a C# console application using Visual Studio.

Creare un'applicazione consoleCreate a console application

Avviare Visual Studio e creare un nuovo progetto App console (.NET Framework).Launch Visual Studio and create a new Console app (.NET Framework) project.

Aggiungere il pacchetto NuGet del bus di servizioAdd the Service Bus NuGet package

  1. Fare clic con il pulsante destro del mouse sul progetto appena creato e scegliere Gestisci pacchetti NuGet.Right-click the newly created project and select Manage NuGet Packages.
  2. Fare clic sulla scheda Esplora, cercare WindowsAzure.ServiceBus e quindi selezionare l'elemento WindowsAzure.ServiceBus.Click the Browse tab, search for WindowsAzure.ServiceBus, and then select the WindowsAzure.ServiceBus item. Fare clic su Installa per completare l'installazione, quindi chiudere questa finestra di dialogo.Click Install to complete the installation, then close this dialog box.

    Selezionare un pacchetto NuGet

Scrivere il codice per inviare un messaggio all'argomentoWrite some code to send a message to the topic

  1. Aggiungere l'istruzione using seguente all'inizio del file Program.cs.Add the following using statement to the top of the Program.cs file.

    using Microsoft.ServiceBus.Messaging;
    
  2. Aggiungere il codice seguente al metodo Main .Add the following code to the Main method. Impostare la variabile connectionString sulla stessa stringa di connessione ottenuta al momento della creazione dello spazio dei nomi e impostare topicName sul nome usato durante la creazione dell'argomento.Set the connectionString variable to the connection string that you obtained when creating the namespace, and set topicName to the name that you used when creating the topic.

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

    Ecco l'aspetto che avrà il file Program.cs.Here is what your Program.cs file should look like.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.ServiceBus.Messaging;
    
    namespace tsend
    {
        class Program
        {
            static void Main(string[] args)
            {
                var connectionString = "Endpoint=sb://<your namespace>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<your key>";
                var topicName = "<your topic name>";
    
                var client = TopicClient.CreateFromConnectionString(connectionString, topicName);
                var message = new BrokeredMessage("This is a test message!");
    
                client.Send(message);
    
                Console.WriteLine(String.Format("Message body: {0}", message.GetBody<String>()));
                Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
    
                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 dell'argomento nel pannello Panoramica dello spazio dei nomi.Run the program, and check the Azure portal: click the name of your topic in the namespace Overview blade. Viene visualizzato il pannello Informazioni di base dell'argomento.The topic Essentials blade is displayed. Nelle sottoscrizioni elencate nella parte inferiore del pannello si noti che il valore di Numero di messaggi attivi per ogni sottoscrizione ora è 1.In the subscription(s) listed near the bottom of the blade, notice that the Message Count value for each subscription should now be 1. Ogni volta che si avvia l'applicazione mittente senza recuperare i messaggi (come illustrato nella sezione successiva), questo valore aumenta di 1.Each time you run the sender application without retrieving the messages (as described in the next section), this value increases by 1. Si noti anche che la dimensione corrente dell'argomento aumenta il valore di Corrente nel pannello Informazioni di base ogni volta che l'app aggiunge un messaggio all'argomento o alla sottoscrizione.Also note that the current size of the topic increments the Current value on the Essentials blade each time the app adds a message to the topic/subscription.

    Dimensioni dei messaggi

5. Ricevere messaggi dalla sottoscrizione5. Receive messages from the subscription

  1. Per ricevere uno o più messaggi inviati, creare una nuova applicazione console e aggiungere un riferimento al pacchetto NuGet del bus di servizio, come per l'applicazione mittente precedente.To receive the message or messages you just sent, create a new console application and add a reference to the Service Bus NuGet package, similar to the previous sender application.
  2. Aggiungere l'istruzione using seguente all'inizio del file Program.cs.Add the following using statement to the top of the Program.cs file.

    using Microsoft.ServiceBus.Messaging;
    
  3. Aggiungere il codice seguente al metodo Main .Add the following code to the Main method. Impostare la variabile connectionString sulla stessa stringa di connessione ottenuta al momento della creazione dello spazio dei nomi e impostare topicName sul nome usato durante la creazione dell'argomento.Set the connectionString variable to the connection string you obtained when creating the namespace, and set topicName to the name that you used when creating the topic. Assicurarsi di sostituire <your subscription name> con il nome della sottoscrizione creata nel passaggio 3.Also make sure to replace <your subscription name> with the name of the subscription you created in step 3.

    var connectionString = "<your connection string>";
    var topicName = "<your topic name>";
    
    var client = SubscriptionClient.CreateFromConnectionString(connectionString, topicName, "<your subscription name>");
    
    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:Here is what your Program.cs file should look like:

    using System;
    using Microsoft.ServiceBus.Messaging;
    
    namespace GettingStartedWithTopics
    {
      class Program
      {
        static void Main(string[] args)
        {
          var connectionString = "Endpoint=sb://<your namespace>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<your key>";;
          var topicName = "<your topic name>";
    
          var client = SubscriptionClient.CreateFromConnectionString(connectionString, topicName, "<your subscription name>");
    
          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.Run the program, and check the portal again. Si noti che ora i valori di Numero di messaggi attivi e di Corrente sono pari a 0.Notice that the Message Count and Current values are now 0.

    Lunghezza argomento

Congratulazioni.Congratulations! Sono stati creati un argomento e una sottoscrizione ed è stato inviato un messaggio che è stato quindi ricevuto.You have now created a topic and subscription, sent a message, and received that message.

Passaggi successiviNext steps

Vedere il repository GitHub con esempi che illustrano alcune delle funzionalità più avanzate della messaggistica del bus di servizio.Check out our GitHub repository with samples that demonstrate some of the more advanced features of Service Bus messaging.