2012-08-28 79 views
2

我們有多個具有多個子流程的主業務流程。所有的根編排都是交易類型:無,因此所有的子編碼也具有相同的性質。現在,任何異常都會在主業務流程的父範圍中捕獲,並且我們有一些步驟(如日誌記錄)。編排通過來自App SQL的消息來激活。所以每次發生異常時都要說出由於間歇性的原因,例如無法連接到Web服務。我們稍後再手動重新觸發。Biztalk異常 - 自我修復orchestartion

我正在尋找修改orch是自我修復,從異常捕獲塊說,它重新基於條件告訴,這個問題是間歇性的消息。像應用issue-null引用,我們不想重發消息,因爲,orch永遠不會工作。

有一個叫做補償的概念,但是如果任何1失敗,那麼其他步驟(可以做替代動作或清理)就是基於事務的orch-do n步驟。

我唯一的想法是根據關鍵字查找異常並決定重新發送消息。但我想要some1來挑戰這個或者提出更好的方法

回答

1

我一直認爲離線處理故障會更好。所以如果編排失敗,請終止它。但在終止之前,請發送一條消息。如果發現存在導致故障的臨時問題,則此消息將包含恢復消息處理所需的所有信息。該消息可以由負責恢復的「看護者」過程消耗。

這與Erlang OTP框架如何接近高可用性相似。進程快速失敗,看護程序確保恢復發生。