问题描述
使用Azure Event Hub服务,除了正常的生产,消费消息以外,如果想拿到Event Hub中存储的历史消息?有什么方法呢?
问题解答
获取 Event Hubs 存储的历史消息,首先需要确保消息进入Event Hub的时间处于保留期限(Retention Days)内,因为超过这个期限消息会被删除。
如果确认在期限内,在代码中可以指定时间或者对应的offset获取对应的消息。以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
当然,使用Service Bus Explorer工具也能获取到Event Hub中的数据,下载地址:https://github.com/paolosalvatori/ServiceBusExplorer
当创建Listener 之后,可以指定start time
参考资料
Event Hub事件保留:https://docs.azure.cn/zh-cn/event-hubs/event-hubs-features#event-retention