Gebeurtenissen verzenden naar of gebeurtenissen ontvangen van Event Hubs met behulp van Python (azure-eventhub)Send events to or receive events from event hubs by using Python (azure-eventhub)

In deze quickstart ziet u hoe u gebeurtenissen kunt verzenden naar en ontvangen van een Event Hub met behulp van het Python-pakket azure-eventhub.This quickstart shows how to send events to and receive events from an event hub using the azure-eventhub Python package.

VereistenPrerequisites

Als u nog geen ervaring hebt met Azure Event Hubs, raadpleegt u het Event Hubs-overzicht voordat u deze quickstart uitvoert.If you're new to Azure Event Hubs, see Event Hubs overview before you do this quickstart.

Voor het voltooien van deze snelstart moet aan de volgende vereisten worden voldaan:To complete this quickstart, you need the following prerequisites:

  • Microsoft Azure-abonnement.Microsoft Azure subscription. Als u Azure-services wilt gebruiken, met inbegrip van Azure Event Hubs, hebt u een abonnement nodig.To use Azure services, including Azure Event Hubs, you need a subscription. Als u nog geen Azure-account hebt, kunt u zich aanmelden voor een gratis proefversie of uw voordelen als MSDN-abonnee gebruiken wanneer u een account maakt.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.

  • Python 2.7 of 3.5 of hoger, waarbij PIP is ge├»nstalleerd en bijgewerkt.Python 2.7 or 3.5 or later, with PIP installed and updated.

  • Het Python-pakket voor Event Hubs.The Python package for Event Hubs.

    Als u het pakket wilt installeren, voert u deze opdracht uit bij een opdrachtprompt met Python in het pad:To install the package, run this command in a command prompt that has Python in its path:

    pip install azure-eventhub
    

    Installeer het volgende pakket om de gebeurtenissen te ontvangen met behulp van Azure Blob-opslag als controlepuntopslag:Install the following package for receiving the events by using Azure Blob storage as the checkpoint store:

    pip install azure-eventhub-checkpointstoreblob-aio
    
  • Een Event Hubs-naamruimte en een Event Hub maken.Create an Event Hubs namespace and an event hub. In de eerste stap gebruikt u Azure Portal om een naamruimte van het type Event Hubs te maken en de beheerreferenties te verkrijgen die de toepassing nodig heeft om met de Event Hub te communiceren.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. Volg de procedure in dit artikel om een naamruimte en een Event Hub te maken.To create a namespace and an event hub, follow the procedure in this article. Haal vervolgens de verbindingsreeks voor de Event Hubs-naamruimte op door de instructies in het artikel te volgen: Verbindingstekenreeks ophalen.Then, get the connection string for the Event Hubs namespace by following instructions from the article: Get connection string. U gebruikt de verbindingsreeks later in deze quickstart.You use the connection string later in this quickstart.

Gebeurtenissen verzendenSend events

In deze sectie maakt u een Python-script voor het verzenden van gebeurtenissen naar de Event Hub die u eerder hebt gemaakt.In this section, you create a Python script to send events to the event hub that you created earlier.

  1. Open uw favoriete Python-editor, bijvoorbeeld Visual Studio Code.Open your favorite Python editor, such as Visual Studio Code.

  2. Maak een script met de naam send.py.Create a script called send.py. Met dit script wordt een batch van gebeurtenissen verzonden naar de Event Hub die u eerder hebt gemaakt.This script sends a batch of events to the event hub that you created earlier.

  3. Plak de volgende code in send.py:Paste the following code into send.py:

    import asyncio
    from azure.eventhub.aio import EventHubProducerClient
    from azure.eventhub import EventData
    
    async def run():
        # Create a producer client to send messages to the event hub.
        # Specify a connection string to your event hubs namespace and
        # the event hub name.
        producer = EventHubProducerClient.from_connection_string(conn_str="EVENT HUBS NAMESPACE - CONNECTION STRING", eventhub_name="EVENT HUB NAME")
        async with producer:
            # Create a batch.
            event_data_batch = await producer.create_batch()
    
            # Add events to the batch.
            event_data_batch.add(EventData('First event '))
            event_data_batch.add(EventData('Second event'))
            event_data_batch.add(EventData('Third event'))
    
            # Send the batch of events to the event hub.
            await producer.send_batch(event_data_batch)
    
    loop = asyncio.get_event_loop()
    loop.run_until_complete(run())
    
    

    Notitie

    Ga voor de volledige broncode, inclusief informatieve opmerkingen, naar de pagina GitHub send_async.py.For the complete source code, including informational comments, go to the GitHub send_async.py page.

Gebeurtenissen ontvangenReceive events

In deze quickstart wordt Azure Blob Storage gebruikt als controlepuntopslag.This quickstart uses Azure Blob storage as a checkpoint store. De controlepuntopslag wordt gebruikt om controlepunten te behouden (dat wil zeggen, de laatste leesposities).The checkpoint store is used to persist checkpoints (that is, the last read positions).

Waarschuwing

Als u deze code op Azure Stack Hub uitvoert, treden er runtimefouten op tenzij u zich richt op een specifieke versie van de Storage-API.If you run this code on Azure Stack Hub, you will experience runtime errors unless you target a specific Storage API version. Dat komt doordat de Event Hubs-SDK de meest recente Azure Storage-API gebruikt die beschikbaar is in Azure maar die niet beschikbaar is op uw Azure Stack Hub-platform.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. Azure Stack Hub biedt mogelijk ondersteuning voor een andere versie van de Storage Blob-SDK dan de versies die doorgaans in Azure beschikbaar zijn.Azure Stack Hub may support a different version of Storage Blob SDK than those typically available on Azure. Als u Azure Blob-opslag gebruikt als controlepuntopslag, controleert u de ondersteunde versie van de Azure Storage-API voor uw build van Azure Stack Hub en stelt u die versie in uw code als doel in.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.

Als u bijvoorbeeld op Azure Stack Hub versie 2005 uitvoert, is de hoogste beschikbare versie van de Storage-service versie 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. De Event Hubs-SDK-clientbibliotheek maakt standaard gebruik van de hoogste beschikbare versie op Azure (2019-07-07 op het moment van de release van de 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 dit geval moet u naast de volgende stappen in deze sectie ook code toevoegen om de API-versie van de Storage-service te richten op 2019-02-02.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. Zie de synchrone en asynchrone voorbeelden in GitHub voor een voorbeeld van het instellen van een specifieke versie van de Storage-API.For an example on how to target a specific Storage API version, see the synchronous and asynchronous samples on GitHub.

Een Azure-opslagaccount en een blobcontainer makenCreate an Azure storage account and a blob container

Maak een Azure-opslagaccount met daarin een blobcontainer door de volgende stappen te volgen:Create an Azure storage account and a blob container in it by doing the following steps:

  1. Een Azure Storage-account makenCreate an Azure Storage account
  2. Een blobcontainer makenCreate a blob container
  3. De verbindingsreeks voor het opslagaccount ophalenGet the connection string to the storage account

Zorg ervoor dat u de verbindingsreeks en de containernaam vastlegt voor later gebruik in de receive-code.Be sure to record the connection string and container name for later use in the receive code.

Een Python-script maken om gebeurtenissen te ontvangenCreate a Python script to receive events

In deze sectie maakt u een Python-script om gebeurtenissen van uw Event Hub te ontvangen:In this section, you create a Python script to receive events from your event hub:

  1. Open uw favoriete Python-editor, bijvoorbeeld Visual Studio Code.Open your favorite Python editor, such as Visual Studio Code.

  2. Maak een script met de naam recv.py.Create a script called recv.py.

  3. Plak de volgende code in recv.py:Paste the following code into recv.py:

    import asyncio
    from azure.eventhub.aio import EventHubConsumerClient
    from azure.eventhub.extensions.checkpointstoreblobaio import BlobCheckpointStore
    
    
    async def on_event(partition_context, event):
        # Print the event data.
        print("Received the event: \"{}\" from the partition with ID: \"{}\"".format(event.body_as_str(encoding='UTF-8'), partition_context.partition_id))
    
        # Update the checkpoint so that the program doesn't read the events
        # that it has already read when you run it next time.
        await partition_context.update_checkpoint(event)
    
    async def main():
        # Create an Azure blob checkpoint store to store the checkpoints.
        checkpoint_store = BlobCheckpointStore.from_connection_string("AZURE STORAGE CONNECTION STRING", "BLOB CONTAINER NAME")
    
        # Create a consumer client for the event hub.
        client = EventHubConsumerClient.from_connection_string("EVENT HUBS NAMESPACE CONNECTION STRING", consumer_group="$Default", eventhub_name="EVENT HUB NAME", checkpoint_store=checkpoint_store)
        async with client:
            # Call the receive method. Read from the beginning of the partition (starting_position: "-1")
            await client.receive(on_event=on_event,  starting_position="-1")
    
    if __name__ == '__main__':
        loop = asyncio.get_event_loop()
        # Run the main method.
        loop.run_until_complete(main())    
    

    Notitie

    Ga voor de volledige broncode, inclusief aanvullende informatieve opmerkingen, naar de pagina GitHub recv_with_checkpoint_store_async.py.For the complete source code, including additional informational comments, go to the GitHub recv_with_checkpoint_store_async.py page.

De ontvangende app uitvoerenRun the receiver app

U voert het script uit door een opdrachtprompt te openen met Python in het pad en deze opdracht uit te voeren:To run the script, open a command prompt that has Python in its path, and then run this command:

python recv.py

De verzendende app uitvoerenRun the sender app

U voert het script uit door een opdrachtprompt te openen met Python in het pad en deze opdracht uit te voeren:To run the script, open a command prompt that has Python in its path, and then run this command:

python send.py

In het ontvangstvenster worden de berichten weergegeven die naar de Event Hub zijn verzonden.The receiver window should display the messages that were sent to the event hub.

Volgende stappenNext steps

In deze quickstart hebt u gebeurtenissen asynchroon verzonden en ontvangen.In this quickstart, you've sent and received events asynchronously. Ga naar de pagina GitHub sync_samples om te leren hoe u gebeurtenissen synchroon verzendt en ontvangt.To learn how to send and receive events synchronously, go to the GitHub sync_samples page.

Ga naar de Azure Event Hubs-clientbibliotheek voor Python-voorbeelden voor alle voorbeelden (zowel synchrone als asynchrone) in GitHub.For all the samples (both synchronous and asynchronous) on GitHub, go to Azure Event Hubs client library for Python samples.