Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart leert u hoe u gebeurtenissen verzendt naar en ontvangt van een Event Hub met behulp van het npm-pakket @azure/event-hubs .
Als u nog geen toegang hebt tot Azure Event Hubs, raadpleegt u het overzicht van Event Hubs voordat u begint.
Vereiste voorwaarden
- Microsoft Azure-abonnement. Als u Azure-services wilt gebruiken, met inbegrip van Azure Event Hubs, hebt u een abonnement nodig. Als u geen Azure-account hebt, meldt u zich aan voor een gratis proefversie.
- Node.js LTS. Download de nieuwste LTS-versie (Langetermijnondersteuning).
- Visual Studio Code (aanbevolen) of een andere IDE (Integrated Development Environment).
- Een Event Hubs-naamruimte en een Event Hub maken. Gebruik Azure Portal om een naamruimte van het type Event Hubs te maken om de beheerreferenties op te halen die uw toepassing nodig heeft om te communiceren met de Event Hub. Zie Een Event Hub maken met behulp van Azure Portal voor meer informatie.
NPM-pakketten installeren om gebeurtenissen te verzenden
Als u het Node Package Manager-pakket (npm) voor Event Hubs wilt installeren, opent u een opdrachtpromptvenster dat zich in het pad bevindt npm . Verander van map naar de map waarin u uw voorbeelden wilt bewaren.
Voer deze opdrachten uit:
npm install @azure/event-hubs
npm install @azure/identity
De app verifiëren bij Azure
In deze quickstart ziet u twee manieren om verbinding te maken met Azure Event Hubs:
- Wachtwoordloos. Gebruik uw beveiligingsprincipaal in Microsoft Entra ID en op rollen gebaseerd toegangsbeheer (RBAC) om verbinding te maken met een Event Hubs-naamruimte. U hoeft zich geen zorgen te maken over het gebruik van vastgelegde verbindingsreeksen in uw code, in een configuratiebestand of in beveiligde opslag, zoals Azure Key Vault.
- Verbindingsreeks. Gebruik een verbindingsreeks om verbinding te maken met een Event Hubs-naamruimte. Als u nog niet eerder met Azure werkt, kunt u de verbindingsreeks optie gemakkelijker volgen.
We raden u aan de optie zonder wachtwoord te gebruiken in echte toepassingen en productieomgevingen. Zie Service Bus-verificatie en -autorisatie enverbindingen zonder wachtwoord voor Azure-services voor meer informatie.
Rollen toewijzen aan uw Microsoft Entra-gebruiker
Wanneer u lokaal ontwikkelt, moet u ervoor zorgen dat het gebruikersaccount dat verbinding maakt met Azure Event Hubs over de juiste machtigingen beschikt. U hebt de rol Azure Event Hubs-gegevenseigenaar nodig om berichten te verzenden en te ontvangen. Als u uzelf deze rol wilt toewijzen, hebt u de rol Gebruikerstoegangsbeheerder of een andere rol nodig die de Microsoft.Authorization/roleAssignments/write actie bevat. U kunt Azure RBAC-rollen toewijzen aan een gebruiker met behulp van Azure Portal, Azure CLI of Azure PowerShell. Zie de pagina Scope voor Azure RBAC begrijpen voor meer informatie.
In het volgende voorbeeld wordt de Azure Event Hubs Data Owner rol toegewezen aan uw gebruikersaccount, dat volledige toegang biedt tot Azure Event Hubs-resources. Volg in een echt scenario het principe van minimale bevoegdheden om gebruikers alleen de minimale machtigingen te geven die nodig zijn voor een veiligere productieomgeving.
Ingebouwde Azure-rollen voor Azure Event Hubs
Voor Azure Event Hubs is het beheer van naamruimten en alle gerelateerde resources via Azure Portal en de Azure Resource Management-API al beveiligd met behulp van het Azure RBAC-model. Azure biedt de volgende ingebouwde rollen voor het autoriseren van toegang tot een Event Hubs-naamruimte:
- Azure Event Hubs-gegevenseigenaar: hiermee kunt u gegevenstoegang tot de Event Hubs-naamruimte en de bijbehorende entiteiten (wachtrijen, onderwerpen, abonnementen en filters) inschakelen.
- Azure Event Hubs-gegevenszender: gebruik deze rol om de afzender toegang te geven tot de Event Hubs-naamruimte en de bijbehorende entiteiten.
- Azure Event Hubs-gegevensontvanger: gebruik deze rol om de ontvanger toegang te geven tot de Event Hubs-naamruimte en de bijbehorende entiteiten.
Als u een aangepaste rol wilt maken, raadpleegt u Rechten die vereist zijn voor Event Hubs-bewerkingen.
Belangrijk
In de meeste gevallen duurt het een paar minuten voordat de roltoewijzing in Azure is doorgegeven. In zeldzame gevallen kan het maximaal acht minuten duren. Als u verificatiefouten ontvangt wanneer u de code voor het eerst uitvoert, wacht u even en probeert u het opnieuw.
Zoek in Azure Portal uw Event Hubs-naamruimte met behulp van de hoofdzoekbalk of linkernavigatiebalk.
Selecteer op de overzichtspagina toegangsbeheer (IAM) in het linkermenu.
Selecteer op de pagina Toegangsbeheer (IAM) het tabblad Roltoewijzingen .
Selecteer + Toevoegen in het bovenste menu. Selecteer vervolgens Roltoewijzing toevoegen.
Gebruik het zoekvak om de resultaten te filteren op de gewenste rol. Zoek in dit voorbeeld naar
Azure Event Hubs Data Owneren selecteer het overeenkomende resultaat. Kies Volgende vervolgens.Selecteer onder Toegang toewijzen de optie Gebruiker, groep of service-principal. Kies vervolgens + Leden selecteren.
Zoek in het dialoogvenster naar de gebruikersnaam van Microsoft Entra (meestal uw user@domain e-mailadres). Kies Selecteren onder aan het dialoogvenster.
Selecteer Controleren en toewijzen om naar de laatste pagina te gaan. Selecteer Beoordelen en opnieuw toewijzen om het proces te voltooien.
Gebeurtenissen verzenden
In deze sectie maakt u een JavaScript-toepassing waarmee gebeurtenissen worden verzonden naar een Event Hub.
Open een teksteditor, zoals Visual Studio Code.
Maak een bestand met de naamsend.js. Plak de volgende code erin:
Gebruik in de code echte waarden om de volgende tijdelijke aanduidingen te vervangen:
EVENT HUBS NAMESPACE NAMEEVENT HUB NAME
const { EventHubProducerClient } = require("@azure/event-hubs"); const { DefaultAzureCredential } = require("@azure/identity"); // Event hubs const eventHubsResourceName = "EVENT HUBS NAMESPACE NAME"; const fullyQualifiedNamespace = `${eventHubsResourceName}.servicebus.windows.net`; const eventHubName = "EVENT HUB NAME"; // Azure Identity - passwordless authentication const credential = new DefaultAzureCredential(); async function main() { // Create a producer client to send messages to the event hub. const producer = new EventHubProducerClient(fullyQualifiedNamespace, eventHubName, credential); // Prepare a batch of three events. const batch = await producer.createBatch(); batch.tryAdd({ body: "passwordless First event" }); batch.tryAdd({ body: "passwordless Second event" }); batch.tryAdd({ body: "passwordless 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); });Gebruik deze opdracht om de toepassing uit te voeren:
node send.jsMet de opdracht wordt een batch van drie gebeurtenissen naar uw Event Hub verzonden.
Als u de verificatie voor wachtwoordloos (op rollen gebaseerd toegangsbeheer (RBAC) van Microsoft Entra ID gebruikt, moet u zich mogelijk aanmelden bij Azure met het account dat u hebt toegevoegd aan de rol Gegevenseigenaar van Azure Event Hubs. Gebruik de opdracht
az login.Controleer in Azure Portal of de Event Hub de berichten heeft ontvangen. Als u de grafiek wilt bijwerken, vernieuwt u de pagina. Het kan enkele seconden duren voordat wordt aangegeven dat de berichten zijn ontvangen.
Opmerking
Zie de pagina GitHub sendEvents.js voor meer informatie en de volledige broncode.
Gebeurtenissen ontvangen
In deze sectie ontvangt u gebeurtenissen van een Event Hub met behulp van een Azure Blob Storage-controlepuntarchief in een JavaScript-toepassing. Er worden controlepunten voor metagegevens uitgevoerd op ontvangen berichten met regelmatige tussenpozen in een Azure Storage-blob. Met deze aanpak kunt u later eenvoudig berichten blijven ontvangen vanaf de plek waar u was gebleven.
Volg deze aanbevelingen wanneer u Azure Blob Storage als controlepuntarchief gebruikt:
- Gebruik een afzonderlijke container voor elke consumentengroep. U kunt hetzelfde opslagaccount gebruiken, maar één container per groep gebruiken.
- Gebruik het opslagaccount niet voor iets anders.
- Gebruik de container niet voor iets anders.
- Maak het opslagaccount in dezelfde regio als de geïmplementeerde toepassing. Als de toepassing on-premises is, probeert u de dichtstbijzijnde regio te kiezen.
Controleer op de pagina Opslagaccount in Azure Portal in de sectie Blob-service of de volgende instellingen zijn uitgeschakeld.
- Hiërarchische naamruimte
- Blob zacht verwijderen
- Versiebeheer
Een Azure-opslagaccount en een blobcontainer maken
Een Azure Storage-account maken met een blobcontainer:
- Een Azure-opslagaccount maken
- Een blobcontainer maken in het opslagaccount
- Authenticeren bij de blobcontainer
Wanneer u lokaal ontwikkelt, moet u ervoor zorgen dat het gebruikersaccount dat toegang heeft tot blobgegevens over de juiste machtigingen beschikt. U hebt Inzender voor Opslagblobgegevens nodig om blobgegevens te lezen en schrijven. Als u uzelf deze rol wilt toewijzen, moet u de rol Beheerder voor gebruikerstoegang of een andere rol met de actie Microsoft.Authorization/roleAssignments/write krijgen toegewezen. U kunt Azure RBAC-rollen toewijzen aan een gebruiker met behulp van Azure Portal, Azure CLI of Azure PowerShell. Zie Inzicht in het bereik voor Azure RBAC voor meer informatie.
In dit scenario wijst u machtigingen toe aan uw gebruikersaccount, dat is afgestemd op het opslagaccount, om het principe van minimale bevoegdheden te volgen. Deze procedure biedt gebruikers alleen de minimale machtigingen die nodig zijn en maakt veiligere productieomgevingen.
In het volgende voorbeeld wordt de rol Inzender voor opslagblobgegevens toegewezen aan uw gebruikersaccount, dat zowel lees- als schrijftoegang biedt tot blobgegevens in uw opslagaccount.
Belangrijk
In de meeste gevallen duurt het een paar minuten voordat de roltoewijzing in Azure is doorgegeven. In zeldzame gevallen kan het maximaal acht minuten duren. Als u verificatiefouten ontvangt wanneer u de code voor het eerst uitvoert, wacht u even en probeert u het opnieuw.
Zoek uw opslagaccount in Azure Portal met behulp van de hoofdzoekbalk of linkernavigatiebalk.
Selecteer op de pagina opslagaccount toegangsbeheer (IAM) in het menu aan de linkerkant.
Selecteer op de pagina Toegangsbeheer (IAM) het tabblad Roltoewijzingen .
Selecteer + Toevoegen in het bovenste menu. Selecteer vervolgens Roltoewijzing toevoegen.
Gebruik het zoekvak om de resultaten te filteren op de gewenste rol. Zoek voor dit voorbeeld naar Inzender voor Opslagblobgegevens. Selecteer het overeenkomende resultaat en kies vervolgens Volgende.
Selecteer onder Toegang toewijzen de optie Gebruiker, groep of service-principal en kies vervolgens + Leden selecteren.
Zoek in het dialoogvenster naar uw Microsoft Entra-gebruikersnaam (meestal uw user@domain e-mailadres) en kies Vervolgens onderaan het dialoogvenster Selecteren .
Selecteer Controleren en toewijzen om naar de laatste pagina te gaan. Selecteer Beoordelen en opnieuw toewijzen om het proces te voltooien.
De npm-pakketten installeren om gebeurtenissen te ontvangen
Voor de ontvangende kant moet u nog twee pakketten installeren. In deze quickstart gebruikt u Azure Blob Storage om controlepunten vast te leggen, zodat het programma de gebeurtenissen die het programma al heeft gelezen niet leest. Het voert regelmatig metadata-checkpoints uit op ontvangen berichten in een blob. Met deze aanpak kunt u later eenvoudig berichten blijven ontvangen vanaf de plek waar u was gebleven.
Voer deze opdrachten uit:
npm install @azure/storage-blob
npm install @azure/eventhubs-checkpointstore-blob
npm install @azure/identity
Code schrijven om gebeurtenissen te ontvangen
Open een teksteditor, zoals Visual Studio Code.
Maak een bestand met de naamreceive.js. Plak de volgende code erin:
Gebruik in de code echte waarden om de volgende tijdelijke aanduidingen te vervangen:
EVENT HUBS NAMESPACE NAMEEVENT HUB NAMESTORAGE ACCOUNT NAMESTORAGE CONTAINER NAME
const { DefaultAzureCredential } = require("@azure/identity"); const { EventHubConsumerClient, earliestEventPosition } = require("@azure/event-hubs"); const { ContainerClient } = require("@azure/storage-blob"); const { BlobCheckpointStore } = require("@azure/eventhubs-checkpointstore-blob"); // Event hubs const eventHubsResourceName = "EVENT HUBS NAMESPACE NAME"; const fullyQualifiedNamespace = `${eventHubsResourceName}.servicebus.windows.net`; const eventHubName = "EVENT HUB NAME"; const consumerGroup = "$Default"; // name of the default consumer group // Azure Storage const storageAccountName = "STORAGE ACCOUNT NAME"; const storageContainerName = "STORAGE CONTAINER NAME"; const baseUrl = `https://${storageAccountName}.blob.core.windows.net`; // Azure Identity - passwordless authentication const credential = new DefaultAzureCredential(); async function main() { // Create a blob container client and a blob checkpoint store using the client. const containerClient = new ContainerClient( `${baseUrl}/${storageContainerName}`, credential ); const checkpointStore = new BlobCheckpointStore(containerClient); // Create a consumer client for the event hub by specifying the checkpoint store. const consumerClient = new EventHubConsumerClient(consumerGroup, fullyQualifiedNamespace, eventHubName, credential, 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); });Gebruik de opdracht
node receive.jsom deze code uit te voeren. In het venster worden berichten over ontvangen gebeurtenissen weergegeven.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'Opmerking
Zie receiveEventsUsingCheckpointStore.jsvoor de volledige broncode, inclusief informatieve opmerkingen.
Het ontvangerprogramma ontvangt gebeurtenissen van alle partities van de standaardconsumergroep in de Event Hub.
De hulpbronnen opschonen
Verwijder de resourcegroep met de Event Hubs-naamruimte of verwijder alleen de naamruimte als u de resourcegroep wilt behouden.