繁体   English   中英

Azure EventHub-如何删除事件?

[英]Azure EventHub - How to remove the event?

一直以来,我都非常感谢您的帮助,因为我目前处于困境!!!

我们有一个新项目,我们将使用Azure EventHub。 我创建了演示应用程序,可以在其中将事件添加到事件中心,也可以在其中使用IEventProcessor(Receiver project)使用它们。 问题是,每次执行接收方项目时,都会看到相同的事件。 我们难道不希望这些事件在使用后会被删除或删除吗?

Receiver项目中的示例:

foreach (EventData eventData in messages)
{
        string data = Encoding.UTF8.GetString(eventData.GetBytes());

        Console.WriteLine(string.Format("Message received.  Partition: '{0}', Data: '{1}'",
                context.Lease.PartitionId, data));
}

是否可以在Console.WriteLine之后删除/删除事件,还是将消息保留一天? 使用Queues,您可以发出信号通知完成,但是使用EventHub则看不到任何命令,我可以使用它来删除/删除它。

任何答复将不胜感激。 我们被指示使用EventHub,但是出于某种原因,这不是选择问题。

确保退出ProcessEventsAsync之前,先调用context.CheckpointAsync。 这将存储该分区的客户端偏移量,并且为该分区分配的下一个处理器实例将从最后存储的偏移量恢复。

有关文档(请参阅http://msdn.microsoft.com/zh-cn/library/dn751578.aspx) (尽管信息不多)。

您应该使用检查点并保存分区的偏移量。 AFAIK无法从eventhub中删除事件。 活动保留期过后,它将自动从eventhub中删除。 但是我也看到,我们将收到已完成保留期的邮件。

https://social.msdn.microsoft.com/Forums/windows/zh-CN/93b1bf18-2229-4da8-994f-ddc7c675f62f/message-retention-day-not-working?forum=servbus

因此,我相信当您达到空间配额时,它们将自动删除,或者就像预定任务一样,虽然不确定。

将它们缓存到定义的保留期限后,将删除Azure Event Hub中的事件。 您可以将保留天数设置为1-7天。 无需手动删除它们。

除了所有其他答案之外,还有一个更令人困惑的地方:EventHub可能不会删除保留期限长达30天的邮件。 这取决于集线器上的负载。

例如,保留期为1天,但是如果邮件很少,则可以保留更长的时间。

幸运的是,他们没有帐单。

使用事件中心的最佳选择是EventProcessorHost框架。 它使您可以检查所有已阅读的消息。 为此,它存储(在Blob存储中)最后一个检查点消息的索引,以便在关机的情况下恢复处理。

https://blogs.msdn.microsoft.com/servicebus/2015/01/16/event-processor-host-best-practices-part-1/

可能还需要出于开发目的的存储模拟器,但是如果您具有Azure帐户,则可以使用远程Blob存储。

https://docs.microsoft.com/zh-cn/azure/storage/common/storage-use-emulator

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM