2013-12-15 51 views
0

目前我有一個隊列存儲合併查詢,一旦從隊列中讀取它,合併查詢就會運行。這一切都運行良好,並且目前如果合併時出現錯誤,隊列將被禁用,我必須手動刪除消息(或修復合併,因爲它是)。代理隊列 - 將中毒消息移動到表

我想知道是否有可能簡單地將中毒的消息移動到表中?隊列運行的重要(不同)合併必須持續運行以確保數據更新。例如,對於我來說,這樣的隊列對我來說是沒有好處的,例如,在夜間變得殘疾,並且積壓大量積壓。

有什麼辦法可以讓我簡單地將壞消息推入表中?我已經嘗試過這個,但是我最終在TRANSACTION裏面有一個TRY ... CATCH,它執行錯誤的回滾(因此調用5個回退來禁用規則)。大多數在線解決方案只提到手動刪除消息。

有什麼建議嗎?這是一個壞主意嗎?如果是這樣,爲什麼?

謝謝。

回答

1

可以通過在CREATE/ALTER QUEUE語句中將POISON_MESSAGE_HANDLING狀態設置爲OFF來關閉5回滾後禁用功能。然後您可以使用TRY ... CATCH來手動處理失敗的事務。

和你一樣,我沒有發現這個功能非常有用,所以幾乎總是在我的應用程序中關閉它,並以最好的方式處理問題消息。

+0

謝謝你的迴應。我確實喜歡在任何事情發生嚴重錯誤時如何作爲安全措施,但是你是對的,因爲我可能不得不關閉它以便自己處理錯誤。 –

相關問題