从 SQL Server Service Broker 恢复错误消息

从 SQL Server Service Broker 恢复错误消息

过去一年来,我们一直在使用 SSSB 2008,它非常棒。(无论如何,与 MSMQ 相比。)但是,我们只使用相同数据库排队,而不是路由功能。

我们的应用程序中的一些更改现在要求我们路由消息。到目前为止,我们一直在做“发送后不管”——发送消息并结束对话。我并不担心接收应用程序失败,而是担心其中一个数据库配置错误。如果有人弄乱了证书,那么我们会从 SSSB 收到一条错误消息。

当我们收到这些错误时,有什么方法可以获取原始消息对象吗?对于当消息仍在传输队列中时立即发生的错误,这很容易。但是经过网络传输后,似乎消息已经“消失”了。

如果是这种情况,处理它的常用方法是什么?我正在考虑将消息和 ID 写入“QueuedMessages”表,然后在发送队列上激活一个过程,以便在收到 EndDialog 时删除消息,或者在收到错误时设置标志/记录。或者,如果我可以放宽业务要求,我可能只需要将发送项目保留在发送进程的 RAM 中,并让它检查队列中的 Error/EndDialog。(RAM 中的动机是性能——我们计划在运行 SQL Express 的情况下,使用很少的资源每秒发送大约 400 条消息。)

有什么总体评论吗?

答案1

如果消息没有到达目的地,那么您应该能够从 sys.transmission_queue 获取该消息。

相关内容