过去一年我们一直在使用 SSSB 2008,它非常棒。(好吧,无论如何,与 MSMQ 相比。)但是,我们只使用了相同的数据库队列,而不是路由功能。
我们的应用程序中的一些更改现在要求我们路由消息。到目前为止,我们一直在做“一劳永逸”——发送消息并结束对话。我并不担心接收应用程序失败,就像其中一个数据库配置错误一样多。如果有人弄乱了证书,那么我们将从 SSSB 收到一条错误消息。
当我们得到这些错误时,有没有办法得到原始的消息对象?对于消息仍在传输队列中时的即时错误,这很容易。但是通过网络后,消息似乎“消失了”。
如果是这种情况,常见的处理方法是什么?我正在考虑将消息和 ID 写入“QueuedMessages”表,然后在发送队列上激活一个过程,以便在收到 EndDialog 时删除消息,或者在收到错误时设置标志/日志记录。或者,如果我可以放宽业务需求,我也许可以将发送项目保留在发送进程的 RAM 中,并让它检查队列中的错误/结束对话。(in-RAM 的动机是性能——我们计划在运行 SQL Express 的情况下以非常少的资源处理大约 400 条消息/秒的出站消息。)
一般有什么意见吗?
如果消息没有到达目的地,那么您应该能够从 sys.transmission_queue 获取消息。