問題描述
使用Azure Event Hub服務(wù),除了正常的生產(chǎn)济榨,消費(fèi)消息以外燎含,如果想拿到Event Hub中存儲的歷史消息?有什么方法呢腿短?
問題解答
獲取 Event Hubs 存儲的歷史消息,首先需要確保消息進(jìn)入Event Hub的時(shí)間處于保留期限(Retention Days)內(nèi)绘梦,因?yàn)槌^這個(gè)期限消息會被刪除橘忱。
如果確認(rèn)在期限內(nèi),在代碼中可以指定時(shí)間或者對應(yīng)的offset獲取對應(yīng)的消息卸奉。以Java為例可以參考以下sample:
如果需要從最早的消息钝诚,可以直接使用 EventPosition.Earliest(),也可以使用fromEnqueuedTime榄棵,參照:https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/models/EventPosition.java
當(dāng)然凝颇,使用Service Bus Explorer工具也能獲取到Event Hub中的數(shù)據(jù),下載地址:https://github.com/paolosalvatori/ServiceBusExplorer
當(dāng)創(chuàng)建Listener 之后疹鳄,可以指定start time
參考資料
Event Hub事件保留:https://docs.azure.cn/zh-cn/event-hubs/event-hubs-features#event-retention