使用 Azure Web Jobs SDK 的一批事件中心事件中的异常处理



我使用 Azure WebJobs SDK 的 EventHub 支持来处理事件。由于吞吐量的原因,我决定对这些事件进行批处理,例如,我的方法如下所示:

public static void HandleBatchRaw([EventHubTrigger("std")] EventData[] events) {...}

现在,批处理中的这些事件之一可能会导致异常 - 处理它的正确方法是什么?当我不捕获异常时,处理将停止,并且 EventData[] 参数中的其余事件将丢失。

选项:

  1. 手动捕获异常,将事件转发到某个地方否则并继续
  2. 让SDK发挥魔力,例如,它应该只是"ACK"在此之前处理的事件(我可能必须这样做(,将此事件标记为"中毒",退出方法并在下一次调用函数时继续。
  3. 迁移到单个事件处理 - 但为了性能目标我觉得不对
  4. 我错过了重点,应该考虑另一种策略

我应该如何处理这个问题?

任何消息传递解决方案中只有四个选项:1 站2 掉落3 重试4 死信

你必须这样做。我不相信SDK会重试任何东西。回想一下,事件中心读取没有 ACK,你只是读取。

你是如何检查点的?

你最好的选择可能是你的选择#1。 WebJobs EventHub 绑定在这里没有提供很多选项。 请随时在 https://github.com/Azure/azure-webjobs-sdk/issues 提交问题,以在此处请求更好的错误处理支持。

如果你想确切地看到它在后台做什么,下面是 WebJobs SDK EventHub 绑定中通过 EventProcessorHost 接收事件的位置:https://github.com/Azure/azure-webjobs-sdk/blob/dev/src/Microsoft.Azure.WebJobs.ServiceBus/EventHubs/EventHubListener.cs#L86

相关内容

  • 没有找到相关文章

最新更新