[英]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.1和azure-eventhub-checkpointstoreblob-aio 1.1.3 。
我用這些最新的 sdk 測試了你的代碼,它工作正常。
更新 SDK 解決了這個問題。 @AdamLing 在評論中還為我澄清了元數據的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.