[英]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中删除。 但是我也看到,我们将收到已完成保留期的邮件。
因此,我相信当您达到空间配额时,它们将自动删除,或者就像预定任务一样,虽然不确定。
将它们缓存到定义的保留期限后,将删除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.