簡體   English   中英

未保存事件中心檢查點數據

[英]Event Hub Checkpoint Data is Not Saved

我正在從以下位置運行事件中心接收器實現: https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-python-get-started-send#create-a-python-script- to-receive-events ,除了連接字符串等我沒有改變任何東西。

創建數百個事件后,我可以看到接收器在存儲帳戶內創建了檢查點文件夾,但是當我再次運行接收器時,我看到它處理相同的事件。

每個分區創建的文件也是空的。

存儲在 consumerClient 中提供:

checkpoint_store = BlobCheckpointStore.from_connection_string("...", "eventhubcontainer")


client = EventHubConsumerClient.from_connection_string("...", consumer_group="$Default", eventhub_name="eventhub1", checkpoint_store=checkpoint_store)

同樣在閱讀事件后,還有保存檢查點的方法:

await partition_context.update_checkpoint(event)

我在這里錯過了什么嗎?


整個代碼:

import asyncio
from azure.eventhub.aio import EventHubConsumerClient
from azure.eventhub.extensions.checkpointstoreblobaio import BlobCheckpointStore

async def on_event(partition_context, event):
    print("Received the event: \"{}\" from the partition with ID: \"{}\"".format(event.body_as_str(encoding='UTF-8'), partition_context.partition_id))
    await partition_context.update_checkpoint(event)

async def main():
    checkpoint_store = BlobCheckpointStore.from_connection_string("AZURE STORAGE CONNECTION STRING", "BLOB CONTAINER NAME")
    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:
        await client.receive(on_event=on_event,  starting_position="-1")

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

這可能是舊 sdk 中的錯誤。

請嘗試安裝最新版本的 sdk: azure-eventhub 5.3.1azure-eventhub-checkpointstoreblob-aio 1.1.3

我用這些最新的 sdk 測試了你的代碼,它工作正常。

更新 SDK 解決了這個問題。 @AdamLing 在評論中還為我澄清了元數據的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM