Inviare o ricevere eventi da Hub eventi con JavaScript (azure/event-hubs)Send events to or receive events from event hubs by using JavaScript (azure/event-hubs)

Questa guida di avvio rapido illustra come inviare e ricevere eventi da un hub eventi con il pacchetto JavaScript azure/event-hubs.This quickstart shows how to send events to and receive events from an event hub using the azure/event-hubs JavaScript package.

PrerequisitiPrerequisites

Se non si ha familiarità con Hub eventi di Azure, vedere Panoramica di Hub eventi prima di procedere con questa guida di avvio rapido.If you are new to Azure Event Hubs, see Event Hubs overview before you do this quickstart.

Per completare questa guida introduttiva è necessario soddisfare i prerequisiti seguenti:To complete this quickstart, you need the following prerequisites:

  • Sottoscrizione di Microsoft Azure.Microsoft Azure subscription. Per usare i servizi di Azure, tra cui Hub eventi di Azure, è necessaria una sottoscrizione.To use Azure services, including Azure Event Hubs, you need a subscription. Se non si ha un account Azure, è possibile iscriversi per ottenere una versione di valutazione gratuita oppure usare i vantaggi della sottoscrizione di MSDN per la creazione di un account.If you don't have an existing Azure account, you can sign up for a free trial or use your MSDN subscriber benefits when you create an account.

  • Node.js 8.x o versione successiva.Node.js version 8.x or later. Scaricare l'ultima versione con supporto a lungo termine (LTS).Download the latest long-term support (LTS) version.

  • Visual Studio Code (scelta consigliata) o qualsiasi altro IDE (Integrated Development Environment).Visual Studio Code (recommended) or any other integrated development environment (IDE).

  • Uno spazio dei nomi di Hub eventi e un hub eventi attivi.An active Event Hubs namespace and event hub. Per crearli, procedere come segue:To create them, do the following steps:

    1. Nel portale di Azure creare uno spazio dei nomi di Hub eventi e quindi ottenere le credenziali di gestione necessarie all'applicazione per comunicare con l'hub eventi.In the Azure portal, create a namespace of type Event Hubs, and then obtain the management credentials that your application needs to communicate with the event hub.
    2. Per creare lo spazio dei nomi e l'hub eventi, seguire le istruzioni disponibili in Avvio rapido: Creare un hub eventi con il portale di Azure.To create the namespace and event hub, follow the instructions at Quickstart: Create an event hub by using the Azure portal.
    3. Continuare seguendo le istruzioni riportate in questo argomento di avvio rapido.Continue by following the instructions in this quickstart.
    4. Per ottenere la stringa di connessione allo spazio dei nomi di Hub eventi, seguire le istruzioni riportate in Ottenere la stringa di connessione.To get the connection string for your Event Hub namespace, follow the instructions in Get connection string. Prendere nota della stringa di connessione per usarla più avanti in questo argomento di avvio rapido.Record the connection string to use later in this quickstart.
  • Creare uno spazio dei nomi di Hub eventi e un hub eventi.Create an Event Hubs namespace and an event hub. Il primo passaggio consiste nell'usare il portale di Azure per creare uno spazio dei nomi di tipo Hub eventi e ottenere le credenziali di gestione necessarie all'applicazione per comunicare con l'hub eventi.The first step is to use the Azure portal to create a namespace of type Event Hubs, and obtain the management credentials your application needs to communicate with the event hub. Per creare uno spazio dei nomi e un hub eventi, seguire la procedura descritta in questo articolo.To create a namespace and an event hub, follow the procedure in this article. Ottenere quindi la stringa di connessione allo spazio dei nomi di Hub eventi seguendo le istruzioni disponibili nell'articolo Ottenere una stringa di connessione.Then, get the connection string for the Event Hubs namespace by following instructions from the article: Get connection string. La stringa di connessione sarà necessaria più avanti in questa guida di avvio rapido.You use the connection string later in this quickstart.

Installare il pacchetto npmInstall the npm package

Per installare il pacchetto npm (Node Package Manager) per Hub eventi, aprire un prompt dei comandi il cui percorso comprenda npm, passare alla directory in cui si vogliono archiviare gli esempi e quindi eseguire questo comando:To install the Node Package Manager (npm) package for Event Hubs, open a command prompt that has npm in its path, change the directory to the folder where you want to keep your samples, and then run this command:

npm install @azure/event-hubs

Per il lato ricevente, è necessario installare altri due pacchetti.For the receiving side, you need to install two more packages. In questo argomento di avvio rapido si usa archiviazione BLOB di Azure per rendere persistenti i checkpoint, in modo che il programma non legga gli eventi già letti.In this quickstart, you use Azure Blob storage to persist checkpoints so that the program doesn't read the events that it has already read. Vengono eseguiti a intervalli regolari i checkpoint dei metadati sui messaggi ricevuti in un BLOB.It performs metadata checkpoints on received messages at regular intervals in a blob. Con questo approccio risulta facile continuare a ricevere messaggi dal punto in cui si era interrotto in un momento successivo.This approach makes it easy to continue receiving messages later from where you left off.

Eseguire i comandi seguenti:Run the following commands:

npm install @azure/storage-blob
npm install @azure/eventhubs-checkpointstore-blob

Inviare eventiSend events

In questa sezione viene creata un'applicazione JavaScript che invia eventi a un hub eventi.In this section, you create a JavaScript application that sends events to an event hub.

  1. Aprire l'editor preferito, ad esempioVisual Studio Code.Open your favorite editor, such as Visual Studio Code.

  2. Creare un file denominato send.js e incollare il codice seguente all'interno:Create a file called send.js, and paste the following code into it:

    const { EventHubProducerClient } = require("@azure/event-hubs");
    
    const connectionString = "EVENT HUBS NAMESPACE CONNECTION STRING";
    const eventHubName = "EVENT HUB NAME";
    
    async function main() {
    
      // Create a producer client to send messages to the event hub.
      const producer = new EventHubProducerClient(connectionString, eventHubName);
    
      // Prepare a batch of three events.
      const batch = await producer.createBatch();
      batch.tryAdd({ body: "First event" });
      batch.tryAdd({ body: "Second event" });
      batch.tryAdd({ body: "Third event" });    
    
      // Send the batch to the event hub.
      await producer.sendBatch(batch);
    
      // Close the producer client.
      await producer.close();
    
      console.log("A batch of three events have been sent to the event hub");
    }
    
    main().catch((err) => {
      console.log("Error occurred: ", err);
    });
    
  3. Nel codice usare valori reali per sostituire quanto segue:In the code, use real values to replace the following:

    • EVENT HUBS NAMESPACE CONNECTION STRING
    • EVENT HUB NAME
  4. Eseguire node send.js per eseguire questo file.Run node send.js to execute this file. Questo comando invia un batch di tre eventi all'hub eventi.This command sends a batch of three events to your event hub.

  5. Nel portale di Azure verificare se l'hub eventi ha ricevuto i messaggi.In the Azure portal, verify that the event hub has received the messages. Passare alla visualizzazione Messaggi nella sezione Metriche.In the Metrics section, switch to Messages view. Aggiornare la pagina per aggiornare il grafico.Refresh the page to update the chart. La conferma che i messaggi sono stati ricevuti potrebbe comparire dopo alcuni secondi.It might take a few seconds for it to show that the messages have been received.

    Verificare se l'hub eventi ha ricevuto i messaggiVerify that the event hub received the messages

    Nota

    Per il codice sorgente completo, inclusi i commenti informativi aggiuntivi, passare alla pagina sendEvents.js di GitHub.For the complete source code, including additional informational comments, go to the GitHub sendEvents.js page.

Congratulazioni!Congratulations! Sono stati inviati eventi a un hub eventi.You have now sent events to an event hub.

Ricevere eventiReceive events

In questa sezione si ricevono eventi da un hub eventi usando un archivio di checkpoint di archiviazione BLOB di Azure in un'applicazione JavaScript.In this section, you receive events from an event hub by using an Azure Blob storage checkpoint store in a JavaScript application. Vengono eseguiti a intervalli regolari i checkpoint dei metadati sui messaggi ricevuti in un BLOB di archiviazione di Azure.It performs metadata checkpoints on received messages at regular intervals in an Azure Storage blob. Con questo approccio risulta facile continuare a ricevere messaggi dal punto in cui si era interrotto in un momento successivo.This approach makes it easy to continue receiving messages later from where you left off.

Avviso

Se si esegue questo codice nell'hub di Azure Stack, si verificheranno errori di runtime a meno che non si scelga una versione specifica dell'API di archiviazione come destinazione.If you run this code on Azure Stack Hub, you will experience runtime errors unless you target a specific Storage API version. Il motivo è che Event Hubs SDK usa l'ultima versione disponibile in Azure dell'API di archiviazione di Azure, che potrebbe non essere presente nella piattaforma dell'hub di Azure Stack.That's because the Event Hubs SDK uses the latest available Azure Storage API available in Azure that may not be available on your Azure Stack Hub platform. L'hub di Azure Stack potrebbe supportare una versione di Storage Blob SDK diversa da quelle solitamente disponibili in Azure.Azure Stack Hub may support a different version of Storage Blob SDK than those typically available on Azure. Se si usa Archiviazione BLOB di Azure come archivio di checkpoint, verificare la versione dell'API di archiviazione di Azure supportata per la build dell'hub di Azure Stack e scegliere tale versione come destinazione nel codice.If you are using Azure Blog Storage as a checkpoint store, check the supported Azure Storage API version for your Azure Stack Hub build and target that version in your code.

Se ad esempio l'esecuzione avviene nell'hub di Azure Stack versione 2005, la versione più recente disponibile per il servizio di archiviazione è 2019-02-02.For example, If you are running on Azure Stack Hub version 2005, the highest available version for the Storage service is version 2019-02-02. Per impostazione predefinita, la libreria client di Event Hubs SDK usa la versione più recente disponibile in Azure (2019-07-07 al momento del rilascio dell'SDK).By default, the Event Hubs SDK client library uses the highest available version on Azure (2019-07-07 at the time of the release of the SDK). In questo caso, oltre ai passaggi descritti in questa sezione, sarà anche necessario aggiungere codice destinato alla versione 2019-02-02 dell'API del servizio di archiviazione.In this case, besides following steps in this section, you will also need to add code to target the Storage service API version 2019-02-02. Per informazioni su come definire come destinazione una versione specifica dell'API di archiviazione, vedere gli esempi di JavaScript e TypeScript in GitHub.For an example on how to target a specific Storage API version, see JavaScript and TypeScript samples on GitHub.

Creare un account di archiviazione di Azure e un contenitore BLOBCreate an Azure storage account and a blob container

Per creare un account di archiviazione di Azure e un contenitore BLOB, eseguire queste operazioni:To create an Azure storage account and a blob container in it, do the following actions:

  1. Creare un account di archiviazione di AzureCreate an Azure storage account
  2. Creare un contenitore BLOB nell'account di archiviazioneCreate a blob container in the storage account
  3. Ottenere la stringa di connessione all'account di archiviazioneGet the connection string to the storage account

Assicurarsi di prendere nota della stringa di connessione e del nome del contenitore per un uso successivo nel codice di ricezione.Be sure to record the connection string and container name for later use in the receive code.

Scrivere il codice per la ricezione di eventiWrite code to receive events

  1. Aprire l'editor preferito, ad esempioVisual Studio Code.Open your favorite editor, such as Visual Studio Code.

  2. Creare un file denominato receive.js e incollare il codice seguente all'interno:Create a file called receive.js, and paste the following code into it:

    const { EventHubConsumerClient } = require("@azure/event-hubs");
    const { ContainerClient } = require("@azure/storage-blob");    
    const { BlobCheckpointStore } = require("@azure/eventhubs-checkpointstore-blob");
    
    const connectionString = "EVENT HUBS NAMESPACE CONNECTION STRING";    
    const eventHubName = "EVENT HUB NAME";
    const consumerGroup = "$Default"; // name of the default consumer group
    const storageConnectionString = "AZURE STORAGE CONNECTION STRING";
    const containerName = "BLOB CONTAINER NAME";
    
    async function main() {
      // Create a blob container client and a blob checkpoint store using the client.
      const containerClient = new ContainerClient(storageConnectionString, containerName);
      const checkpointStore = new BlobCheckpointStore(containerClient);
    
      // Create a consumer client for the event hub by specifying the checkpoint store.
      const consumerClient = new EventHubConsumerClient(consumerGroup, connectionString, eventHubName, checkpointStore);
    
      // Subscribe to the events, and specify handlers for processing the events and errors.
      const subscription = consumerClient.subscribe({
          processEvents: async (events, context) => {
            if (events.length === 0) {
              console.log(`No events received within wait time. Waiting for next interval`);
              return;
            }
    
            for (const event of events) {
              console.log(`Received event: '${event.body}' from partition: '${context.partitionId}' and consumer group: '${context.consumerGroup}'`);
            }
            // Update the checkpoint.
            await context.updateCheckpoint(events[events.length - 1]);
          },
    
          processError: async (err, context) => {
            console.log(`Error : ${err}`);
          }
        }
      );
    
      // After 30 seconds, stop processing.
      await new Promise((resolve) => {
        setTimeout(async () => {
          await subscription.close();
          await consumerClient.close();
          resolve();
        }, 30000);
      });
    }
    
    main().catch((err) => {
      console.log("Error occurred: ", err);
    });    
    
  3. Nel codice usare valori reali per sostituire quanto segue:In the code, use real values to replace the following values:

    • EVENT HUBS NAMESPACE CONNECTION STRING
    • EVENT HUB NAME
    • AZURE STORAGE CONNECTION STRING
    • BLOB CONTAINER NAME
  4. Eseguire node receive.js al prompt dei comandi per eseguire questo file.Run node receive.js in a command prompt to execute this file. Nella finestra dovrebbero essere visualizzati i messaggi sugli eventi ricevuti.The window should display messages about received events.

    Nota

    Per il codice sorgente completo, inclusi i commenti informativi aggiuntivi, passare alla pagina receiveEventsUsingCheckpointStore.js di GitHub.For the complete source code, including additional informational comments, go to the GitHub receiveEventsUsingCheckpointStore.js page.

Congratulazioni!Congratulations! Sono stati ricevuti eventi dall'hub eventi.You have now received events from your event hub. Il programma ricevente riceverà eventi da tutte le partizioni del gruppo di consumer predefinito nell'hub eventi.The receiver program will receive events from all the partitions of the default consumer group in the event hub.

Passaggi successiviNext steps

Controllare questi esempi in GitHub:Check out these samples on GitHub: