0
在SQL 2008 R2中創建Service Broker隊列時,可以將POISON_MESSAGE_HANDLING狀態指定爲ON或OFF。如果它是開啓的,據我所知,在連續5次回覆消息之後,消息被視爲有毒消息,並且隊列被自動禁用。 BROKER_QUEUE_DISABLED事件也會引發。有毒消息的SQL Server 2005 Service Broker行爲
在SQL 2005(和2008非R2)中,您沒有獲得POISON_MESSAGE_HANDLING設置的選項。 SQL 2005的行爲與2008 R2的行爲相同,此設置爲ON,或此設置爲OFF或其他不同?
禁用它的一個很好的理由是您有應用程序級別的毒害信息檢測。例如,您可以將毒害消息移出隊列,並在隊列中追蹤並潛在地重新排序。但更重要的是,隊列可以繼續接收和處理消息。 –
@JosephDaigle:決定**不**支持這種情況非常明確。將消息移動到'錯誤隊列'中並繼續在*的上下文中處理,以便消息*(對話)流恰好是等待發生的災難。我們記錄了經紀交易應用程序,這些應用程序實施了這些應用程序,並且由於無序處理消息而導致$ + 1M的業務損失。應用程序仍然可以通過響應QUEUE_DISABLED事件通知來實現自動處理,但至少如果他們在腳下自己拍攝,則是他們自己的代碼,而不是系統代碼。 –
你是對的。有些系統需要_exact一次,另一些系統可以處理亂序或不止一次。我想這隻取決於系統和要求。 –