Skicka händelser till eller ta emot händelser från händelsehubbbar med hjälp av JavaScript (azure/event-hubs)
Den här snabbstarten visar hur du skickar händelser till och tar emot händelser från en händelsehubb med hjälp av JavaScript-paketet azure/event-hubs.
Förutsättningar
Om du är nybörjare på Azure Event Hubs kan du Event Hubs översikt innan du gör den här snabbstarten.
För att slutföra den här snabbstarten, behöver du följande förhandskrav:
Microsoft Azure prenumeration . Om du vill använda Azure-Azure Event Hubs måste du ha en prenumeration. Om du inte har ett befintligt Azure-konto kan du registrera dig för en kostnadsfri utvärderingsversion eller använda dina MSDN-prenumerantförmåner när du skapar ett konto.
Node.js version 8.x eller senare. Ladda ned den senaste långsiktiga supportversionen (LTS).
Visual Studio (rekommenderas) eller någon annan IDE (Integrated Development Environment).
En aktiv Event Hubs namnrymd och händelsehubb. Skapa dem genom att göra följande:
- I Azure Portal skapar du ett namnområde av Event Hubs och hämtar sedan deautentiseringsuppgifter för hantering som programmet behöver för att kommunicera med händelsehubben.
- Om du vill skapa namnområdet och händelsehubben följer du anvisningarna i Snabbstart: Skapaen händelsehubb med hjälp av Azure Portal .
- Fortsätt genom att följa anvisningarna i den här snabbstarten.
- Hämta anslutningssträngen för Event Hub-namnområdet genom att följa anvisningarna i Hämta anslutningssträng. Registrera anslutningssträngen som ska användas senare i den här snabbstarten.
Skapa ett Event Hubs och en händelsehubb. Det första steget är att använda Azure Portal för att skapa ett namnområde av typen Event Hubs och hämta de autentiseringsuppgifter för hantering som programmet behöver för att kommunicera med händelsehubben. Om du behöver skapa ett namnområde och en händelsehubb följer du anvisningarna i den här artikeln. Hämta sedan anslutningssträngen för Event Hubs namnområdet genom att följa anvisningarna i artikeln: Hämta anslutningssträngen. Du använder anslutningssträngen senare i den här snabbstarten.
Installera npm-paketet
Om du vill installera Node Package Manager-paketet (npm)för Event Hubs öppnar du en kommandotolk med npm i sökvägen, ändrar katalogen till den mapp där du vill behålla exemplen och kör sedan följande kommando:
npm install @azure/event-hubs
För den mottagande sidan måste du installera ytterligare två paket. I den här snabbstarten använder du Azure Blob Storage för att bevara kontrollpunkter så att programmet inte läser de händelser som det redan har läst. Den utför metadatakontrollpunkter på mottagna meddelanden med jämna mellanrum i en blob. Den här metoden gör det enkelt att fortsätta ta emot meddelanden senare där du slutade.
Kör följande kommandon:
npm install @azure/storage-blob
npm install @azure/eventhubs-checkpointstore-blob
Skicka händelser
I det här avsnittet skapar du ett JavaScript-program som skickar händelser till en händelsehubb.
Öppna din favoritredigerare, till exempel Visual Studio Code.
Skapa en fil med send.js och klistra in följande kod i den:
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); });Använd verkliga värden i koden för att ersätta följande:
EVENT HUBS NAMESPACE CONNECTION STRINGEVENT HUB NAME
Kör
node send.jsför att köra den här filen. Det här kommandot skickar en batch med tre händelser till din händelsehubb.I Azure Portal du att händelsehubben har tagit emot meddelandena. I avsnittet Mått växlar du till vyn Meddelanden. Uppdatera sidan för att uppdatera diagrammet. Det kan ta några sekunder för den att visa att meddelandena har tagits emot.
Anteckning
Den fullständiga källkoden, inklusive ytterligare informationskommentarer, finns på GitHub sendEvents.js sidan.
Grattis! Nu har du skickat händelser till en händelsehubb.
Ta emot händelser
I det här avsnittet får du händelser från en händelsehubb med hjälp av ett Azure Blob Storage-kontrollpunktslager i ett JavaScript-program. Den utför metadatakontrollpunkter på mottagna meddelanden med jämna mellanrum i en Azure Storage blob. Den här metoden gör det enkelt att fortsätta ta emot meddelanden senare där du slutade.
Varning
Om du kör den här koden på Azure Stack Hub får du körningsfel om du inte riktar in dig på en Storage API-version. Det beror på att Event Hubs SDK använder det senaste tillgängliga API Azure Storage tillgängliga API:et i Azure som kanske inte är tillgängligt på din Azure Stack Hub plattform. Azure Stack Hub kan ha stöd för en annan version Storage Blob SDK än de som vanligtvis är tillgängliga i Azure. Om du använder Azure Blog Storage som kontrollpunktslager kontrollerar du vilken Azure Storage API-version som stöds för ditt Azure Stack Hub-bygge och riktar in dig på den versionen i koden.
Om du till exempel kör på Azure Stack Hub version 2005 är den högsta tillgängliga versionen för Storage-tjänsten version 2019-02-02. Som standard använder Event Hubs SDK-klientbiblioteket den högsta tillgängliga versionen i Azure (2019-07-07 vid tidpunkten för SDK-versionen). I det här fallet måste du, förutom att följa stegen i det här avsnittet, även lägga till kod för att rikta Storage-tjänstens API-version 2019-02-02. Ett exempel på hur du riktar in dig på en Storage API-version finns i JavaScript- och TypeScript-exempel på GitHub.
Skapa ett Azure Storage-konto och en blobcontainer
Skapa ett Azure Storage-konto och en blobcontainer i det genom att utföra följande åtgärder:
- Skapa ett Azure Storage-konto
- Skapa en blob-container i lagringskontot
- Hämta anslutningssträngen till lagringskontot
Se till att registrera anslutningssträngen och containernamnet för senare användning i mottagningskoden.
Skriva kod för att ta emot händelser
Öppna din favoritredigerare, till exempel Visual Studio Code.
Skapa en fil med receive.js och klistra in följande kod i den:
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); });I koden använder du verkliga värden för att ersätta följande värden:
EVENT HUBS NAMESPACE CONNECTION STRINGEVENT HUB NAMEAZURE STORAGE CONNECTION STRINGBLOB CONTAINER NAME
Kör
node receive.jsi en kommandotolk för att köra den här filen. Fönstret ska visa meddelanden om mottagna händelser.Anteckning
Den fullständiga källkoden, inklusive ytterligare informationskommentarer, finns på GitHub receiveEventsUsingCheckpointStore.js sidan.
Grattis! Nu har du tagit emot händelser från din händelsehubb. Mottagarprogrammet tar emot händelser från alla partitioner i standardkonsumentgruppen i händelsehubben.
Nästa steg
Kolla in följande exempel på GitHub:
