2017-02-15 98 views
0

我已經編寫了一個Azure函數,該函數處理來自事件中心的消息並將消息寫入Azure表。Azure函數錯誤處理?

Azure函數中的錯誤處理工作到底如何?如何在處理消息時發出失敗信號以確保消息未從Event Hub中永久刪除,以防未將消息正確寫入Azure表中?

+0

您是否試圖拋出一個經典的異常? –

+0

如果在Azure表格插入中出現故障,是否可以將工作重新插入集線器? –

+0

但是,默認行爲是什麼?如果在我的代碼中引發異常,會發生什麼情況?事件中心消息是否會自動重新處理或者消失? – OlavT

回答

0

事件中心消息將會消失:有關msdn的更多信息。

EventHubs適用於大批量吞吐量。這裏有重要的 含義分歧 - 這是通過處理 批次中的事件並批量處理批次發生的。所以它不利於 重試單個事件和毒素隊列。

一些選項:

  1. 如果你是小體積,使用Azure的隊列來代替。這有更好的重試和毒素隊列語義

  2. 您的處理程序可以捕獲用戶代碼中的錯誤並執行您自己的錯誤處理策略,例如重試或發送到您自己的毒性隊列。

如果你看一下Azure Functions Bindings docs,存儲QueueTriggers和BlobTriggers將消息路由到一個有害隊列,以及服務總線隊列/主題/訂閱處理在服務總線級別毒的消息。

0

只是一個建議,如何使用EventHub +的東西像Azure Queue?意思是使用事件中心彙集高流量數據並讓它觸發Azure功能,如果出現問題,請將有效負載推送到Azure隊列,以便在Azure隊列上進行回退處理,並有可能實現更好的故障排除。就像馬特上面提到的那樣 - 高容量隊列 - 或者我應該說更像是一個數據管道,對數據保留有限制,而這是由於隊列數據的性質而造成的。