【发布时间】:2009-02-10 19:52:17
【问题描述】:
我正在使用 C# 和 .Net Framework 1.1(是的,它很旧,但我继承了这些东西,无法转换)。我将消息放在事务队列上,但大约 50% 的时间它不会进入队列。运行安装了所有服务包的工作组和 Windows/XP Professional。我也没有在死信队列中看到任何消息。
有什么想法可以去哪里看吗?
【问题讨论】:
标签: msmq
我正在使用 C# 和 .Net Framework 1.1(是的,它很旧,但我继承了这些东西,无法转换)。我将消息放在事务队列上,但大约 50% 的时间它不会进入队列。运行安装了所有服务包的工作组和 Windows/XP Professional。我也没有在死信队列中看到任何消息。
有什么想法可以去哪里看吗?
【问题讨论】:
标签: msmq
如果它根本没有进入队列并且没有进入死信队列,则表明该项目没有被发送到队列。您应该能够通过打开队列的日志来确认是这种情况。
假设它没有进入队列,这可能是一个事务问题。我会检查您是否每次都将消息提交到队列中。确保没有任何异常被抛出和吞下,导致事务回滚或永远不会被提交(本质上是同一件事)。还要确保没有任何条件语句意味着提交被跳过。
我会在事务启动、提交和回滚的每个位置以及您创建消息的任何位置周围添加一些日志记录。然后,您可以查看您的日志以查看事件的顺序并了解发生了什么误会。
另一种选择是删除所有事务代码并针对非事务队列测试代码。如果消息全部出现,那么这是一个事务性问题。如果不是,则问题出在其他地方。
我经常使用 MSMQ,我从经验中学到的一件事是它工作得非常好,弱点是我 :-)
【讨论】: