过去一年我们一直在使用SSSB 2008,这真是太好了。 (好吧,与MSMQ相比)不过,我们只使用相同的数据库排队,而不是路由function。
我们的应用程序中的一些变化现在需要我们路由消息。 到目前为止,我们一直在做“火,忘了” – 发送一条消息,并结束谈话。 我并不担心接收应用程序失败的数据库configuration错误之一。 如果有人弄虚作假,那么我们会从SSSB收到错误信息。
当我们得到这些错误时,有没有办法获得原始的消息对象? 当消息仍然在传输队列中时,立即发生错误,这很容易。 但是在经过networking之后,看起来消息已经“消失”了。
如果是这样的话,处理它的常用方法是什么? 我正在考虑将消息和ID写入“QueuedMessages”表,然后在发送队列中激活一个过程,以便在接收到EndDialog时删除消息,或者在收到错误时设置标记/日志logging。 或者,如果我可以放宽业务需求,我可能只能将发送项目保存在发送进程的RAM中,然后让队列检查Error / EndDialog。 (对于内存的动机就是性能 – 我们计划在运行SQL Express的情况下,只需很less的资源即可出站400个消息/秒。)
任何意见一般?
如果消息没有到达目的地,那么你应该能够从sys.transmission_queue获得消息。