2017-02-07 30 views
0

我使用Azure WebJobs Sdk的EventHub支持來處理事件。由於吞吐量的原因,我決定去批量處理這些事件,例如我的方法是這樣的:使用Azure WebJobs處理一批事件中心事件中的異常Sdk

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

一個批次內的事件現在一個可能會導致異常 - 有什麼處理的正確方法嗎?當我離開異常未捕獲時,處理停止並且EventData []參數中的其餘事件丟失。

選項:

  1. 手動捕捉異常,事件轉發到一些地方 否則,繼續
  2. 讓SDK做的魔力,例如它應該只是 「確認」事件處理,直到那時(我可能會這樣做),將此事件標記爲「中毒」,退出該方法並繼續下一次函數調用。
  3. 移動到單個事件處理 - 但對於性能 目標,我不覺得這是正確的
  4. 我忽略了一點,應該考慮另一個策略

我應該如何看待這一點?

+0

據我所知,當事件執行失敗,那麼SDK將重試事件。 –

回答

0

只有四個任何消息解決方案選擇:1 停止 2刪除 3重試 4死信

你必須這樣做。我不相信SDK會重試任何東西。回想一下,沒有確認事件中心讀取,你剛剛閱讀。

你是怎麼檢查點?

0

你最好的選擇可能是你的選擇#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