Sql server 2005 有害消息的SQL Server 2005 Service Broker行为

Sql server 2005 有害消息的SQL Server 2005 Service Broker行为,sql-server-2005,sql-server-2008-r2,service-broker,Sql Server 2005,Sql Server 2008 R2,Service Broker,在SQL 2008 R2中创建Service Broker队列时,可以将中毒消息处理状态指定为打开或关闭。据我所知,如果它处于启用状态,则在连续5次回滚消息后,该消息将被视为有害消息,队列将自动禁用。还引发代理队列禁用事件 在SQL 2005(和2008非R2)中,您无法获得“有毒消息”处理设置的选项。SQL 2005的行为是否与2008 R2的行为相同(此设置处于打开状态)、此设置处于关闭状态或其他不同的状态?Service Broker自2005年起就进行了有毒消息处理,并且始终以相同的方式

在SQL 2008 R2中创建Service Broker队列时,可以将中毒消息处理状态指定为打开或关闭。据我所知,如果它处于启用状态,则在连续5次回滚消息后,该消息将被视为有害消息,队列将自动禁用。还引发代理队列禁用事件


在SQL 2005(和2008非R2)中,您无法获得“有毒消息”处理设置的选项。SQL 2005的行为是否与2008 R2的行为相同(此设置处于打开状态)、此设置处于关闭状态或其他不同的状态?

Service Broker自2005年起就进行了有毒消息处理,并且始终以相同的方式工作:连续5次Rollbak将禁用队列。最后,添加了禁用它的选项,但是你必须考虑禁用毒药消息处理是一个可怕的想法:如果你真的遇到了毒药消息,系统将旋转NavuasW/O取得进展。

禁用它的一个很好的理由是你有应用级毒药消息检测。例如,您可以将有毒消息移出队列,在队列中可以跟踪并可能重新查询这些消息。但更重要的是,队列可以继续接收和处理消息。@JosephDaigle:不支持该方案的决定非常明确。将消息移动到“错误队列”中,并在消息流(对话)的顺序中继续处理,这是一个等待发生的灾难。我们已经记录了经纪交易所的应用程序,这些应用程序实现了这一点,并由于处理无序的邮件而导致100万美元的业务损失。应用程序仍然可以通过响应队列禁用的事件通知来实现自动处理,但至少如果它们射中自己的脚是它们自己的代码,而不是系统代码。你是对的。一些系统需要精确的一次顺序,其他系统可以处理无序或多次。我想这取决于系统和需求。