如何删除来自 Azure EventHub 的旧消息?

use*_*654 7 azure azure-eventhub

当我们订阅特定类型的 EventHub 时。我看到我的工作人员也一直在处理旧消息。有什么方法可以摆脱事件中心中的旧消息或手动更改所需消息的分区偏移值?截至目前,当工作人员重新启动时,我们的工作人员不会跟踪已处理的消息,检查点未保存并且旧消息被重新处理......那么任何人都可以分享一种摆脱这个问题的方法吗?

提前致谢,拉达。

Phu*_*ong 6

您不能从 Azure 事件中心删除消息,但我将提供几个替代方案。

  1. 您可以缩短消息保留期。默认情况下,您可以将保留期设置为将邮件保留 1-7 天。如果它保存的数据多于相关数据,只需将其缩短即可。
  2. 进入 Azure 事件中心的每条消息都附加了一个名为“EventEnqueuedUtcTime”的列/属性,表示它进入事件中心的时间。让您的程序订阅事件中心。所有事件都将流入,但您可以在 IF 语句中编程以仅处理在指定时间后具有 EventEnqueuedUtcTime 的消息。请记住,此时间是您托管的命名空间的服务器时间,其时钟可能与测量时间。
  3. 将您自己的时间戳附加到您的消息中,并使用此新属性/列执行步骤 2。

  • 根据上面的#1,不保证消息在保留时间到期后会被删除。请参阅 https://blogs.msdn.microsoft.com/servicebus/2015/03/09/data-retention-in-event-hubs/ (5认同)

Sre*_*ati 2

将 EventHub 想象为存储在云上的持久事件流。您需要维护从哪里开始阅读的光标。没有其他办法。您需要检查点才能执行此操作。大多数消息传递用户对 EventHub 中的主题语义感到困惑。这个现有的问题可以使这个方向变得清晰。

有关事件中心的更多信息...