1

像往常一样,我会很感激你的帮助,因为我现在卡住了!!!

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

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,但出于某种原因,这不是选择问题。

4

5 回答 5

5

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

有关文档,请参阅http://msdn.microsoft.com/en-us/library/dn751578.aspx(虽然信息不多)。

于 2014-11-20T17:52:01.363 回答
1

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

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

所以我相信当你达到空间配额时它们会被自动删除,或者它会像一个计划任务,但不确定。

于 2015-02-11T18:47:57.623 回答
0

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

例如,保留期是 1 天,但如果消息很少,它们可以保留更长的时间。

幸运的是,他们没有计费。

于 2016-05-28T15:20:44.010 回答
0

Azure 事件中心中的事件在定义的保留期缓冲后将被删除。您可以将保留天数设置为 1-7 天。无需手动删除它们。

于 2015-09-17T19:37:55.440 回答
-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/en-us/azure/storage/common/storage-use-emulator

于 2017-10-09T15:14:08.073 回答