2012-05-21 101 views
1

在今天的客戶,我們分析了前周的日誌,我們發現有關Windows Azure的服務總線隊列了以下問題:的Windows Azure服務總線隊列:節流和黃玉

請求被終止,因爲實體正在被扼殺。 請稍候10秒後重試。

驗證碼後,我告訴他們使用瞬態故障漢鼎應用程序塊(TOPAZ),以實現重試政策像這樣的:

var retryStrategy = new Incremental(5, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2)); 
var retryPolicy = new RetryPolicy<ServiceBusTransientErrorDetectionStrategy>(retryStrategy); 

客戶回答:

「啊,這很好,所以它也會處理這樣一個事實,即它應該在受到限制時等待 10秒鐘。」

想想吧,我從來沒有證實過這是否是這種情況。我一直認爲這是事實。在Microsoft.Practices.EnterpriseLibrary.WindowsAzure.TransientFaultHandling程序集中,我查找了一些代碼,在節流的情況下會等待10秒鐘,但沒有找到任何東西。

這是否意味着TOPAZ不足以創建彈性應用程序?這應該結合一些自定義代碼來處理限制(例如,如果發生特定異常,請等待10秒鐘)?

回答

0

我記得,「10秒」等待不是必需的。此外,TOPAZ我相信也有退讓功能,可以幫助你解決問題。

就個人而言,我認爲僅僅使用像TOPAZ這樣的東西不足以創建一個真正有彈性的解決方案。彈性不僅限於單個連接點的節流,還需要能夠處理故障轉移到TOPAZ不會執行的冗餘端點。

1

至於節流方面,Topaz提供了一套內置的重試策略,包括: - 固定間隔 - 增量間隔 - 隨機指數回退間隔

您也可以編寫自定義的重試並將其插入Topaz。

此外,正如布倫特所示,10秒等待不是強制性的。在很多情況下,立即重試可能會成功,無需等待。默認情況下,Topaz在使用策略定義的重試間隔之前立即執行第一次重試。

有關詳細信息,請參閱Ch.6「構建彈性雲和彈性雲應用程序」開發人員指南,也可從here以epub/mobi/pdf的形式下載。

如果您對Topaz有任何建議/功能要求,請通過uservoice提交。

相關問題