Posílání událostí a přijímání událostí z Center událostí pomocí Pythonu (Azure-eventhub)Send events to or receive events from event hubs by using Python (azure-eventhub)

V tomto rychlém startu se dozvíte, jak odesílat události do centra událostí a přijímat z něj události pomocí balíčku Pythonu pro Azure-eventhub .This quickstart shows how to send events to and receive events from an event hub using the azure-eventhub Python package.

PředpokladyPrerequisites

Pokud s Azure Event Hubs teprve začínáte, přečtěte si téma přehled Event Hubs před provedením tohoto rychlého startu.If you're new to Azure Event Hubs, see Event Hubs overview before you do this quickstart.

K dokončení tohoto rychlého startu potřebujete následující požadavky:To complete this quickstart, you need the following prerequisites:

  • Microsoft Azure předplatné.Microsoft Azure subscription. Pokud chcete používat služby Azure, včetně Azure Event Hubs, potřebujete předplatné.To use Azure services, including Azure Event Hubs, you need a subscription. Pokud nemáte existující účet Azure, můžete si zaregistrovat bezplatnou zkušební verzi nebo využít výhody pro předplatitele MSDN při vytváření účtu.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 nebo 3,5 nebo novější, s nainstalovaným a aktualizovaným PIPPython 2.7 or 3.5 or later, with PIP installed and updated.

  • Balíček Pythonu pro Event Hubs.The Python package for Event Hubs.

    Chcete-li nainstalovat balíček, spusťte tento příkaz na příkazovém řádku, který má Python v cestě:To install the package, run this command in a command prompt that has Python in its path:

    pip install azure-eventhub
    

    Nainstalujte následující balíček pro příjem událostí pomocí úložiště objektů BLOB v Azure jako úložiště kontrolního bodu:Install the following package for receiving the events by using Azure Blob storage as the checkpoint store:

    pip install azure-eventhub-checkpointstoreblob-aio
    
  • Vytvoří obor názvů Event Hubs a centrum událostí.Create an Event Hubs namespace and an event hub. 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í.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. Pokud chcete vytvořit obor názvů a centrum událostí, postupujte podle pokynů v tomto článku.To create a namespace and an event hub, follow the procedure in this article. Pak Získejte připojovací řetězec pro obor názvů Event Hubs podle pokynů uvedených v článku získání připojovacího řetězce.Then, get the connection string for the Event Hubs namespace by following instructions from the article: Get connection string. Připojovací řetězec použijete později v tomto rychlém startu.You use the connection string later in this quickstart.

Odesílání událostíSend events

V této části vytvoříte skript v jazyce Python, který bude odesílat události do centra událostí, které jste vytvořili dříve.In this section, you create a Python script to send events to the event hub that you created earlier.

  1. Otevřete oblíbený editor Pythonu, například Visual Studio Code.Open your favorite Python editor, such as Visual Studio Code.

  2. Vytvořte skript s názvem Send.py.Create a script called send.py. Tento skript pošle dávku událostí do centra událostí, které jste vytvořili dříve.This script sends a batch of events to the event hub that you created earlier.

  3. Vložte následující kód do 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())
    
    

    Poznámka

    Úplný zdrojový kód, včetně informativních komentářů, najdete na stránce GitHub send_async. py.For the complete source code, including informational comments, go to the GitHub send_async.py page.

Příjem událostíReceive events

V tomto rychlém startu se jako úložiště kontrolního bodu používá úložiště objektů blob Azure.This quickstart uses Azure Blob storage as a checkpoint store. Úložiště kontrolního bodu se používá k trvalému kontrolnímu bodu (to znamená poslední pozice pro čtení).The checkpoint store is used to persist checkpoints (that is, the last read positions).

Upozornění

Pokud spustíte tento kód v Azure Stackovém centru, dojde k chybám za běhu, pokud necílíte na konkrétní verzi rozhraní API úložiště.If you run this code on Azure Stack Hub, you will experience runtime errors unless you target a specific Storage API version. Důvodem je, že sada Event Hubs SDK používá nejnovější dostupné rozhraní API Azure Storage dostupné v Azure, které nemusí být k dispozici na vaší platformě služby Azure Stack hub.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. Centrum Azure Stack může podporovat jinou verzi sady SDK pro úložiště objektů blob, než jsou ta, která jsou běžně dostupná v Azure.Azure Stack Hub may support a different version of Storage Blob SDK than those typically available on Azure. Pokud jako úložiště kontrolního bodu používáte Azure blogu Storage, podívejte se na podporovanou verzi rozhraní API Azure Storage pro sestavení centra Azure Stack a cílení na verzi v kódu.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.

Pokud například používáte v Azure Stack centra verze 2005, nejvyšší dostupná verze služby úložiště je verze 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. Ve výchozím nastavení používá Klientská knihovna Event Hubs SDK nejvyšší dostupnou verzi v Azure (2019-07-07 v době vydání sady 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). V takovém případě, kromě kroků v této části, budete také muset přidat kód pro cílení na rozhraní API služby úložiště verze 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. Příklad cílení na konkrétní verzi rozhraní API úložiště najdete v článku synchronní a asynchronní ukázky na GitHubu.For an example on how to target a specific Storage API version, see the synchronous and asynchronous samples on GitHub.

Vytvoření účtu služby Azure Storage a kontejneru objektů BLOBCreate an Azure storage account and a blob container

Pomocí následujících kroků vytvořte účet úložiště Azure a kontejner objektů BLOB.Create an Azure storage account and a blob container in it by doing the following steps:

  1. Vytvoření účtu Azure StorageCreate an Azure Storage account
  2. Vytvoření kontejneru objektů blobCreate a blob container
  3. Získání připojovacího řetězce k účtu úložištěGet the connection string to the storage account

Nezapomeňte si poznamenejte připojovací řetězec a název kontejneru pro pozdější použití v kódu pro příjem.Be sure to record the connection string and container name for later use in the receive code.

Vytvoření skriptu v jazyce Python pro příjem událostíCreate a Python script to receive events

V této části vytvoříte skript v jazyce Python pro příjem událostí z centra událostí:In this section, you create a Python script to receive events from your event hub:

  1. Otevřete oblíbený editor Pythonu, například Visual Studio Code.Open your favorite Python editor, such as Visual Studio Code.

  2. Vytvořte skript s názvem recv.py.Create a script called recv.py.

  3. Vložte následující kód do 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())    
    

    Poznámka

    Úplný zdrojový kód včetně dalších informativních komentářů najdete na stránce 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.

Spuštění aplikace příjemceRun the receiver app

Chcete-li spustit skript, otevřete příkazový řádek, který má v cestě Python, a pak spusťte tento příkaz:To run the script, open a command prompt that has Python in its path, and then run this command:

python recv.py

Spuštění aplikace odesílateleRun the sender app

Chcete-li spustit skript, otevřete příkazový řádek, který má v cestě Python, a pak spusťte tento příkaz:To run the script, open a command prompt that has Python in its path, and then run this command:

python send.py

V okně přijímače by se měly zobrazit zprávy, které byly odeslány do centra událostí.The receiver window should display the messages that were sent to the event hub.

Další krokyNext steps

V tomto rychlém startu jste události odeslali a přijali asynchronně.In this quickstart, you've sent and received events asynchronously. Pokud se chcete dozvědět, jak odesílat a přijímat události synchronně, navštivte stránku Sync_samples GitHubu.To learn how to send and receive events synchronously, go to the GitHub sync_samples page.

Pro všechny ukázky (synchronní i asynchronní) na GitHubu najdete ukázky v části Klientská knihovna pro Azure Event Hubs pro Python.For all the samples (both synchronous and asynchronous) on GitHub, go to Azure Event Hubs client library for Python samples.