如何在调用retryQueue.AddSync()时失败?

问题描述 投票:0回答:1

我正在使用Azure Function EventHub触发器。来到EH的消息非常关键,我们不想错过任何消息。如果在处理来自我的事件中心的消息时发生了某些事情,我会按如下方式写入我的retryQueue:

try
{
     await retryQueue.AddAsync (some data from my hub); 
    // if this call also fails, it goes to my catch
}
catch (exception e)
{
    await retryQueue.AddAsync (my eventData); 
    // but what if this call also fails?
}

但是当我的catch块中的AddAsync()调用失败时会发生什么?我如何以及在何处保存邮件以便以后处理?是否存在IsTransient(我的服务总线队列中可用)?

c# azure queue azure-functions azure-eventhub
1个回答
0
投票

重复容差 - 如果由于超时/分区最少丢失导致检查指向失败而不是功能代码中的错误,那么获得该分区租约的下一个EventProcessorHost将开始从上一个已知检查点检索消息。

Event Hub保证至少一次交付但不是最多一次交付。

Azure Functions不会尝试更改该行为。如果没有重复消息是优先事项,那么您需要在工作流程中缓解它。因此,当检查指向失败时,如果您的功能正在批处理级别处理消息,则需要管理更多重复消息。

有关更多详细信息,请参阅此case

© www.soinside.com 2019 - 2024. All rights reserved.