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

时间:2018-03-01 19:02:48

标签: c# azure queue azure-functions azure-eventhub

我正在使用 Azure功能 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(我的服务总线队列中可用)?

1 个答案:

答案 0 :(得分:0)

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

Event Hub保证至少一次投放,但不保证最多投放。

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

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