Odesílání nebo příjem událostí ze služby Event Hubs pomocí JavaScriptu (azure/event-hubs)

Tento rychlý start ukazuje, jak odesílat události do centra událostí a přijímat je z něj pomocí javascriptového balíčku azure/event-hubs.

Požadavky

Pokud s tímto Azure Event Hubs začínáte, Event Hubs tohoto rychlého startu najdete přehled informací.

K dokončení tohoto rychlého startu potřebujete následující požadavky:

  • Microsoft Azure předplatného. K používání služeb Azure, včetně Azure Event Hubs, potřebujete předplatné. Pokud ještě nemáte účet Azure, můžete si zaregistrovat bezplatnou zkušební verzi nebo využít výhody pro předplatitele MSDN při vytváření účtu.

  • Node.js verze 8.x nebo novější. Stáhněte si nejnovější dlouhodobou verzi podpory (LTS).

  • Visual Studio Code (doporučeno) nebo jakékoli jiné integrované vývojové prostředí (IDE).

  • Aktivní Event Hubs oboru názvů a centra událostí. Pokud je chcete vytvořit, proveďte následující kroky:

    1. V Azure Portalvytvořte obor názvů typu Event Hubs a pak získejte přihlašovací údaje pro správu, které vaše aplikace potřebuje ke komunikaci s centrem událostí.
    2. Pokud chcete vytvořit obor názvů a centrum událostí, postupujte podle pokynů v tématu Rychlý start: Vytvořenícentra událostí pomocí Azure Portal .
    3. Pokračujte podle pokynů v tomto rychlém startu.
    4. Pokud chcete získat připojovací řetězec pro obor názvů centra událostí, postupujte podle pokynů v tématu Získání připojovacího řetězce. Zaznamente si připojovací řetězec, který použijete později v tomto rychlém startu.
  • Vytvořte Event Hubs oboru názvů a centrum událostí. Prvním krokem je použití Azure Portal k vytvoření oboru názvů typu Event Hubs a získání přihlašovacích údajů pro správu, které vaše aplikace potřebuje ke komunikaci s centrem událostí. Pokud chcete vytvořit obor názvů a centrum událostí, postupujte podle pokynů v tomto článku. Pak získejte připojovací řetězec pro obor názvů Event Hubs podle pokynů v článku: Získání připojovacího řetězce. Připojovací řetězec použijete později v tomto rychlém startu.

Instalace balíčku npm

Pokud chcete nainstalovat balíček Node Správce balíčků (npm)pro Event Hubs , otevřete příkazový řádek, který má v cestě npm, změňte adresář na složku, do které chcete ukázky zachovat, a pak spusťte tento příkaz:

npm install @azure/event-hubs

Pro přijímající stranu je potřeba nainstalovat další dva balíčky. V tomto rychlém startu použijete Azure Blob Storage k zachování kontrolních bodů, aby program nečetl události, které už přečetl. Provádí kontrolní body metadat u přijatých zpráv v pravidelných intervalech v objektu blob. Tento přístup usnadňuje pozdější příjem zpráv z místa, kde jste opustili.

Spusťte následující příkazy:

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

Odesílání událostí

V této části vytvoříte javascriptovou aplikaci, která odesílá události do centra událostí.

  1. Otevřete oblíbený editor, například Visual Studio Code.

  2. Vytvořte soubor s názvemsend.js a vložte do něj následující kód:

    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. V kódu nahraďte pomocí reálných hodnot následující položky:

    • EVENT HUBS NAMESPACE CONNECTION STRING
    • EVENT HUB NAME
  4. Spuštěním node send.js příkazu spusťte tento soubor. Tento příkaz odešle dávku tří událostí do centra událostí.

  5. V Azure Portal ověřte, že centrum událostí přijalo zprávy. V části Metriky přepněte do zobrazení Zprávy. Aktualizujte stránku a aktualizujte graf. Může trvat několik sekund, než se zobrazí, že byly přijaty zprávy.

    Ověření, že centrum událostí přijalo zprávy

    Poznámka

    Úplný zdrojový kód, včetně dalších informačních komentářů, najdete na GitHub sendEvents.js stránky.

Gratulujeme! Nyní jste odeslali události do centra událostí.

Příjem událostí

V této části budete přijímat události z centra událostí pomocí úložiště kontrolních bodů azure blob storage v javascriptové aplikaci. Provádí kontrolní body metadat u přijatých zpráv v pravidelných intervalech v Azure Storage blob. Tento přístup usnadňuje pozdější příjem zpráv z místa, kde jste opustili.

Upozornění

Pokud tento kód spustíte v Azure Stack Hub, dojde k chybám za běhu, pokud nezacílit na konkrétní verzi Storage API. Je to proto, že Event Hubs SDK používá nejnovější dostupné rozhraní AZURE STORAGE API dostupné v Azure, které nemusí být dostupné na vaší Azure Stack Hub platformě. Azure Stack Hub může podporovat jinou verzi sady Blob SDK Storage, než která je obvykle dostupná v Azure. Pokud jako úložiště kontrolních bodů Storage Azure Blog, zkontrolujte podporovanou verzi rozhraní Azure Storage API pro vaše sestavení Azure Stack Hub a cílíte na tuto verzi ve vašem kódu.

Pokud například používáte verzi Azure Stack Hub 2005, je nejvyšší dostupná verze pro službu Storage verze 2019-02-02. Ve výchozím nastavení klientská knihovna Event Hubs SDK používá nejvyšší dostupnou verzi v Azure (7. 7. 2019 v době vydání sady SDK). V tomto případě budete kromě následujících kroků v této části také muset přidat kód pro cílení na rozhraní API služby Storage verze 2019-02-02. Příklad cílení na konkrétní verzi rozhraní API Storage najdete v tématu Ukázky JavaScriptu a TypeScriptu na GitHub.

Vytvoření účtu úložiště Azure a kontejneru objektů blob

Pokud chcete vytvořit účet úložiště Azure a kontejner objektů blob, proveďte následující akce:

  1. Vytvoření účtu úložiště Azure
  2. Vytvoření kontejneru objektů blob v účtu úložiště
  3. Získání připojovacího řetězce k účtu úložiště

Nezapomeňte si zaznamenat připojovací řetězec a název kontejneru pro pozdější použití v kódu pro příjem.

Psaní kódu pro příjem událostí

  1. Otevřete oblíbený editor, například Visual Studio Code.

  2. Vytvořte soubor s názvemreceive.js a vložte do něj následující kód:

    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. V kódu nahraďte pomocí reálných hodnot následující hodnoty:

    • EVENT HUBS NAMESPACE CONNECTION STRING
    • EVENT HUB NAME
    • AZURE STORAGE CONNECTION STRING
    • BLOB CONTAINER NAME
  4. Spuštěním node receive.js příkazu na příkazovém řádku spusťte tento soubor. V okně by se měly zobrazit zprávy o přijatých událostech.

    Poznámka

    Úplný zdrojový kód, včetně dalších informačních komentářů, najdete na GitHub receiveEventsUsingCheckpointStore.js stránky.

Gratulujeme! Nyní jste obdrželi události z centra událostí. Program příjemce bude přijímat události ze všech oddílů výchozí skupiny příjemců v centru událostí.

Další kroky

Podívejte se na tyto ukázky na GitHub: