我的azure函數計算某些請求作業(cca.5s-5min)的結果,其中每個作業根據請求消息的散列值具有唯一的jobId。執行導致確定性結果。所以它在功能上是「純粹的功能」。因此,我們將基於jobId的已評估作業的結果緩存到blob存儲中。迄今爲止都很棒。如何獲取隊列觸發天青功能的運行狀態?
現在如果對jobId的請求出現三種情況是可能的。
- 結果在緩存中已經=>然後它從緩存中提供。
- 結果不在緩存中,並沒有功能正在運行評估=>新調用
- 結果不在緩存中,但有些功能已經在開發它=>等待結果
我們做一些基於自定義表格存儲的進度跟蹤魔術來判斷函數是否在給定jobId上工作或者還沒有工作。
它以某種方式工作,直到5 x重新啓動 - >毒性隊列方案。在那裏,我們相當無望。
我覺得我們正在竊取一些已經可靠實現的Azure函數內部特性,因爲在Azure門戶的監視器頁面中可以看到完全相同的信息,或者曾經在kudu webjobs監視器頁面中可見。
如何在c#中可靠地找出給定消息(jobId)當前是否正在被某個函數處理,何時不是?
感謝您的努力,但似乎您正在建議一個處理來自隊列的消息的函數。我已經有一個處理消息「FunctionA」的函數,並且我希望其他函數「FunctionB」能夠確定某個「FunctionA」是否已經在消息中工作。如果進程啓動而不是排隊新消息,則「功能B」等待結果是有意義的。 –