Senden oder Empfangen von Ereignissen an bzw. von Event Hubs unter Verwendung von JavaScript („azure/event-hubs“)
In dieser Schnellstartanleitung erfahren Sie, wie Sie mithilfe des JavaScript-Pakets azure/event-hubs Ereignisse an einen Event Hub senden bzw. von dort empfangen.
Voraussetzungen
Wenn Sie mit Azure Event Hubs noch nicht vertraut sind, lesen Sie vor dem Durcharbeiten dieser Schnellstartanleitung die Informationen unter Übersicht über Event Hubs.
Zum Durchführen dieser Schnellstartanleitung benötigen Sie Folgendes:
Microsoft Azure-Abonnement. Für die Verwendung von Azure-Diensten benötigen Sie ein Abonnement. Das gilt auch für Azure Event Hubs. Falls Sie noch nicht über ein Azure-Konto verfügen, können Sie sich für eine kostenlose Testversion registrieren oder beim Erstellen eines Kontos Ihre MSDN-Abonnentenvorteile nutzen.
Node.js ab Version 8.x. Die aktuelle Version mit langfristigem Support (Long-Term Support, LTS) steht hier zum Download bereit.
Visual Studio Code (empfohlen) oder eine andere integrierte Entwicklungsumgebung (Integrated Development Environment, IDE)
Ein aktiver Event Hubs-Namespace und ein aktiver Event Hub. Diese können Sie wie folgt erstellen:
- Erstellen Sie im Azure-Portal einen Namespace vom Typ Event Hubs, und rufen Sie anschließend die Verwaltungsanmeldeinformationen ab, die Ihre Anwendung für die Kommunikation mit dem Event Hub benötigt.
- Eine Anleitung zum Erstellen des Namespace und des Event Hubs finden Sie unter Schnellstart: Erstellen eines Event Hubs mithilfe des Azure-Portals.
- Fahren Sie mit den Schritten in dieser Schnellstartanleitung fort.
- Eine Anleitung zum Abrufen der Verbindungszeichenfolge für Ihren Event Hub-Namespace finden Sie unter Abrufen der Verbindungszeichenfolge im Portal. Notieren Sie sich die Verbindungszeichenfolge zur späteren Verwendung in dieser Schnellstartanleitung.
Erstellen Sie einen Event Hubs-Namespace und einen Event Hub. Verwenden Sie zunächst das Azure-Portal, um einen Namespace vom Typ „Event Hubs“ zu erstellen, und beschaffen Sie die Verwaltungsanmeldeinformationen, die Ihre Anwendung für die Kommunikation mit dem Event Hub benötigt. Erstellen Sie anhand der Anleitung in diesem Artikel einen Namespace und einen Event Hub. Gehen Sie dann wie im folgenden Artikel beschrieben vor, um die Verbindungszeichenfolge für den Event Hubs-Namespace abzurufen: Abrufen der Verbindungszeichenfolge. Sie verwenden die Verbindungszeichenfolge im weiteren Verlauf dieser Schnellstartanleitung.
Installieren des npm-Pakets
Öffnen Sie eine Eingabeaufforderung, die npm im Pfad enthält, ändern Sie das Verzeichnis in den Ordner, in dem die Beispiele gespeichert werden sollen, und führen Sie dann den folgenden Befehl aus, um das npm-Paket für Event Hubs zu installieren:
npm install @azure/event-hubs
Für die empfangende Seite müssen zwei weitere Pakete installiert werden. In dieser Schnellstartanleitung wird Azure Blob Storage zum Speichern von Prüfpunkten verwendet, damit das Programm die bereits gelesenen Ereignisse nicht erneut liest. In einem Blob werden für empfangene Nachrichten in regelmäßigen Abständen Metadatenprüfpunkte erstellt. Dadurch kann der Empfang von Nachrichten später problemlos an der Stelle fortgesetzt werden, an der Sie aufgehört haben.
Führen Sie die folgenden Befehle aus:
npm install @azure/storage-blob
npm install @azure/eventhubs-checkpointstore-blob
Senden von Ereignisse
In diesem Abschnitt wird eine JavaScript-Anwendung erstellt, die Ereignisse an einen Event Hub sendet.
Öffnen Sie Ihren bevorzugten Editor, z. B. Visual Studio Code.
Erstellen Sie eine Datei namens send.js, und fügen Sie den folgenden Code ein:
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); });Ersetzen Sie im Code Folgendes durch echte Werte:
EVENT HUBS NAMESPACE CONNECTION STRINGEVENT HUB NAME
Führen Sie
node send.jsaus, um diese Datei auszuführen. Durch diesen Befehl wird ein Batch mit drei Ereignissen an Ihren Event Hub gesendet.Vergewissern Sie sich im Azure-Portal, dass der Event Hub die Nachrichten erhalten hat. Aktualisieren Sie die Seite, um das Diagramm zu aktualisieren. Es kann einige Sekunden dauern, bis der Empfang der Nachrichten angezeigt wird.
Hinweis
Der gesamte Quellcode (einschließlich zusätzlicher hilfreicher Kommentare) steht auf der GitHub-Seite „sendEvents.js“ zur Verfügung.
Glückwunsch! Sie haben jetzt Ereignisse an einen Event Hub gesendet.
Empfangen von Ereignissen
In diesem Abschnitt werden mithilfe eines Azure Blob Storage-Prüfpunkts in einer JavaScript-Anwendung Ereignisse von einem Event Hub empfangen. In einem Azure Storage-Blob werden für empfangene Nachrichten in regelmäßigen Abständen Metadatenprüfpunkte erstellt. Dadurch kann der Empfang von Nachrichten später problemlos an der Stelle fortgesetzt werden, an der Sie aufgehört haben.
Warnung
Wenn Sie diesen Code in Azure Stack Hub ausführen, treten Laufzeitfehler auf, es sei denn, Sie verwenden eine bestimmte Storage-API-Version als Ziel. Dies liegt daran, dass das Event Hubs SDK die neueste verfügbare Azure Storage-API verwendet, die in Azure verfügbar und auf Ihrer Azure Stack Hub-Plattform möglicherweise nicht verfügbar ist. Azure Stack Hub unterstützt möglicherweise eine andere Storage Blob SDK-Version als die üblicherweise in Azure verfügbaren SDKs. Wenn Sie Azure Blob Storage als Prüfpunktspeicher verwenden, überprüfen Sie die unterstützte Azure Storage-API-Version für Ihren Azure Stack Hub-Build, und verwenden Sie diese Version im Code als Ziel.
Wenn Sie z. B. die Azure Stack Hub-Version 2005 verwenden, ist die Version 2019-02-02 die höchste verfügbare Version für den Storage-Dienst. Standardmäßig verwendet die Clientbibliothek des Event Hubs SDK die höchste verfügbare Version in Azure (2019-07-07 zum Zeitpunkt der Veröffentlichung des SDK). In diesem Fall müssen Sie neben den folgenden Schritten in diesem Abschnitt auch Code für die API-Version 2019-02-02 des Storage-Diensts hinzufügen. Ein Beispiel für die Verwendung einer bestimmten Storage-API-Version als Ziel finden Sie auf GitHub in den Beispielen für JavaScript und TypeScript.
Erstellen eines Azure-Speicherkontos und eines Blobcontainers
Führen Sie die folgenden Schritte aus, um ein Azure-Speicherkonto und einen darin befindlichen Blobcontainer zu erstellen:
- Erstellen eines Azure-Speicherkontos
- Erstellen eines Blobcontainers im Speicherkonto
- Abrufen der Verbindungszeichenfolge für das Speicherkonto
Notieren Sie sich die Verbindungszeichenfolge und den Containernamen zur späteren Verwendung im Empfangscode.
Schreiben von Code zum Empfangen von Ereignissen
Öffnen Sie Ihren bevorzugten Editor, z. B. Visual Studio Code.
Erstellen Sie eine Datei namens receive.js, und fügen Sie den folgenden Code ein:
const { EventHubConsumerClient, earliestEventPosition } = 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}`); } }, { startPosition: earliestEventPosition } ); // 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); });Ersetzen Sie im Code die folgenden Werte durch echte Werte:
EVENT HUBS NAMESPACE CONNECTION STRINGEVENT HUB NAMEAZURE STORAGE CONNECTION STRINGBLOB CONTAINER NAME
Führen Sie
node receive.jsan einer Eingabeaufforderung aus, um diese Datei auszuführen. Im Fenster sollten Meldungen zu empfangenen Ereignissen angezeigt werden.C:\Self Study\Event Hubs\JavaScript>node receive.js Received event: 'First event' from partition: '0' and consumer group: '$Default' Received event: 'Second event' from partition: '0' and consumer group: '$Default' Received event: 'Third event' from partition: '0' and consumer group: '$Default'Hinweis
Der gesamte Quellcode (einschließlich zusätzlicher hilfreicher Kommentare) steht auf der GitHub-Seite „receiveEventsUsingCheckpointStore.js“ zur Verfügung.
Glückwunsch! Sie haben erfolgreich Ereignisse von Ihrem Event Hub empfangen. Das Empfängerprogramm empfängt Ereignisse von allen Partitionen der Standardconsumergruppe im Event Hub.
Nächste Schritte
Sehen Sie sich diese Beispiele auf GitHub an:
- JavaScript samples (JavaScript-Beispiele)
- TypeScript-Beispiele
