代理队列 - 将中毒消息移至表

时间:2013-12-15 21:14:53

标签: sql sql-server queue service-broker

目前我有一个存储合并查询的队列,这些查询在从队列中读取后运行。这一切都运行良好,目前如果合并错误,队列将禁用,我必须手动删除消息(或修复合并,因为它)。

我想知道是否可以简单地将中毒的消息移到桌子上?队列运行重要(和不同)合并,必须不断运行以确保数据更新。对我而言,对我来说,如果在夜间成为残疾人并获得大量积压,这对我来说是没有好处的。

有没有办法让我简单地将坏消息推入表格?我自己尝试了这个但是我在TRANSACTION中有一个TRY ... CATCH,它无论如何都会对错误执行回滚(因此调用5次回滚来禁用规则)。大多数在线解决方案仅提及手动删除消息。

有什么建议吗?这只是一个坏主意吗?如果是这样,为什么?

感谢。

1 个答案:

答案 0 :(得分:1)

可以通过在CREATE / ALTER QUEUE语句中将POISON_MESSAGE_HANDLING状态设置为OFF来关闭disable-after-5-rollbacks。然后,您可以使用TRY ... CATCH手动处理失败的事务。

和我一样,我没有发现这个功能非常有用,所以几乎总是在我的应用程序中关闭它并以任何最佳方式处理问题消息。

相关问题